vbScript открывает Excel, но не загружает макросы / модули?
Я в очень странной ситуации. Я создал скрипт VBS, который откроет мой файл Excel. Я определил код VBA в методе WorkBook_open. Я думал, что создание скрипта VBS для открытия моего Excel вызовет мой метод workBook_open и выполнит код VBA внутри него. Но я был неправ. Ниже мой код VBS.
filePath = "E:\data_extracts\mydata.xlsm"
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.Open(filepath)
oExcel.Visible = True
oExcel.Run "RefreshDataFromIQY"
oExcel.ActiveWorkbook.Save
oExcel.ActiveWorkbook.Close
oExcel.Quit
Set oExcel = Nothing
При отладке происходит сбой в oExcel.Run "RefreshDataFromIQY", сообщая, что макросы недоступны или отключены. Следовательно, этот код просто успешно открывает приложение Excel, и это все, что он делает. У меня есть макрокоды в module1, module2. Как / где мне написать для выполнения моих макросов в VBS скрипт ниже. Мои макросы / модули должны выполняться последовательно, а некоторые из моих макросов являются записанными макросами. Буду признателен за любую оказанную помощь. Благодарю.
Спасибо за ваш вклад, Скотт. Вот что я сделал изменения в своем коде
Dim oExcelApp
Dim oExcelWkb
set oExcelApp = createobject("Excel.Application")
set oExcelWkb = oExcelApp.Workbooks.Open("\\myserver\data_extracts\TestTOPTMay307.xlsm")
oExcelWkb.Close True
oExcelApp.Quit
Однако при запуске его из командной строки, это дает мне ошибку времени выполнения Требуется объект: "Закрыть". Есть идеи почему? Почему не удается закрыть? Что я делаю неправильно? Благодарю.
1 ответ
Я только что проверил твой код на пустом файле, который я сделал. Это сработало, когда я поместил код внутри модуля и оставил его общедоступным. Однако, когда я помещаю в закрытый модуль -> как модуль уровня рабочего листа, я получаю ошибку, которую вы получили.
Однако когда я ссылался на закрытый объект, код пробежал. Так что мой ответ вам заменить
oExcel.Run "RefreshDataFromIQY"
С
oExcel.Run "[yourClassName].RefreshDataFromIQY"
Также я поместил workbook_event в свой файл. Событие успешно сработало при открытии, поэтому, если у вас возникли проблемы, это, скорее всего, в коде внутри события.