Скрипт VBA обновляет запрос MySQL в Excel только при втором запуске

#excel #vba

Вопрос:

У меня есть скрипт VBA, который открывает excel, обновляет запрос MySQL в стороне Excel, прикрепляется к электронной почте и отправляет ее по Outlook (у меня есть другой скрипт VBS, который выполняет этот запрос). Неважно, что я делаю и какой код я использую, мне нужно запустить его дважды, чтобы обновить данные таблицы, при первом запуске сценария VBS в нем будут старые данные, но как только я запущу его во второй раз, в нем будут обновленные данные.

Пожалуйста, помогите, огромное спасибо

Вот настройки для обновления

введите описание изображения здесь

Вот скрипт VBA:

 Sub SendEmail_Example1()

Dim EmailApp As Outlook.Application
Dim Source As String
Set EmailApp = New Outlook.Application

Dim EmailItem As Outlook.MailItem
Set EmailItem = EmailApp.CreateItem(olMailItem)

Dim tbl As ListObject
Set tbl = ActiveWorkbook.ActiveSheet.ListObjects("Query1")
tbl.QueryTable.Refresh BackgroundQuery:=False

EmailItem.To = "test@test.ie"
EmailItem.Subject = "OnHoldProcessMtsPrintLam"
EmailItem.HTMLBody = "Hi Darren," amp; vbNewLine amp; vbNewLine amp; "This is your weekly automatic report"
Source = ThisWorkbook.FullName
EmailItem.Attachments.Add Source

EmailItem.Send

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Saved = True
End Sub
 

В случае, если вот сценарий VBS, который я использую для запуска сценария VBA (я буду использовать его в качестве запланированной задачи)

 'Input Excel File's Full Path
ExcelFilePath = "C:UsersRolandasDesktopOnHoldProcessMtsPrintLam.xlsm"

'Input Module/Macro name within the Excel File
MacroPath = "ThisWorkbook.SendEmail_Example1"

'Create an instance of Excel
Set ExcelApp = CreateObject("Excel.Application")

'Do you want this Excel instance to be visible?
ExcelApp.Visible = False  'or "False"

'Prevent any App Launch Alerts (ie Update External Links)
ExcelApp.DisplayAlerts = False

'Open Excel File
Set wb = ExcelApp.Workbooks.Open(ExcelFilePath)

'Execute Macro Code
ExcelApp.Run MacroPath

'Save Excel File (if applicable)
wb.Save

'Reset Display Alerts Before Closing
ExcelApp.DisplayAlerts = True

'Close Excel File
wb.Close

'End instance of Excel
ExcelApp.Quit

'Leaves an onscreen message!
'MsgBox "Your Automated Task successfully ran at " amp; TimeValue(Now), vbInformation
 

Комментарии:

1. Попробуйте сохранить книгу после обновления, прежде чем прикреплять ее к электронной почте

2. @CDP1802 как это сделать? Я новичок в VBA и VBS, я уже вторую неделю пытаюсь во всем разобраться.

3. добавить ThisWorkbook.Save после tbl.QueryTable.Refresh

4. @CDP1802 вау, какое простое решение, я потратил целый день, перепробовав множество сумасшедших кодов, и ничего не работало, огромное спасибо за помощь