У меня есть сценарий VBS, который запускает макрос VBA в Excel. Макрос работает, когда я вручную запускаю его в файле Excel, но при вызове из VBS он не удаляет существующие данные перед запуском запросов.Как удалить ячейки Excel при запуске макроса из сценария VBs
Вот мой VBS скрипт работы с Excel:
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("Y:\Public\Eoin\Complaints Report\Complaints Report.xlsm", False)
msgbox("3")
xlApp.Run "Complaints_Report.Complaints_Report()"
WScript.Sleep 100000
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
Вот мой Excel VBA макросов хранится в модуле:
Sub Complaints_Report()
Sheets("Complaints Report").Activate
'Clear out old detail
Range("A2:Z10000").Clear
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String
'Open Connection'
objMyConn.ConnectionString = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=***)" & _
"(HOST=*****)(PORT=****))" & _
"(CONNECT_DATA=(SERVICE_NAME =*****))); uid=******; pwd=*****;"
objMyConn.Open
'Set and Excecute SQL Command'
strSQL = "Select distinct * From Temp_Final_Complaints_Report"
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open strSQL
'Copy Data to Excel'
Sheets("Complaints Report").Range("A2").CopyFromRecordset (objMyRecordset)
End Sub
Макрос возвращает результаты, но не удаляет все, в лист заранее.
Это все еще не выполняется. В настоящее время в моем файле excel у меня есть данные в строках 2:13, и я ввел некоторые фиктивные данные в ячейки в A21 и A33, чтобы убедиться, что макрос поймает, когда будет пустая строка. В настоящее время макрос будет запускать SQL-запросы и выводить их, пока не исчезнут фиктивные данные. –
Даже прокомментируйте все бары «Листы» («Отчет о жалобах»). Активируйте «Очистить старые детали Таблицы (« Отчет о жалобах »). Диапазон (« A2: Z10000 »). Очистить ничего не делает –
Просто заметили другую проблему при попытке имитируйте вашу настройку: скобки в VBScript должны быть опущены. См. Мой обновленный ответ. – trincot