#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 вау, какое простое решение, я потратил целый день, перепробовав множество сумасшедших кодов, и ничего не работало, огромное спасибо за помощь