我处于一种非常奇怪的境地。我创建了一个可以打开我的excel文件的vbs脚本。我在WorkBook_open方法中定义了vba代码。我想创建一个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脚本中如何/在哪里编写执行我的宏。我的宏/模块必须按顺序执行,我的一些宏是录制的宏。任何帮助深表感谢。感谢。
感谢您的投入Scott。这是我对代码进行更改的内容
Dim oExcelApp
Dim oExcelWkb
set oExcelApp = createobject("Excel.Application")
set oExcelWkb = oExcelApp.Workbooks.Open("\\myserver\data_extracts\TestTOPTMay307.xlsm")
oExcelWkb.Close True
oExcelApp.Quit
然而,从命令行运行它时,它给我运行时错误所需的对象:'关闭'。知道为什么吗?为什么没有关闭?我究竟做错了什么?感谢。
答案 0 :(得分:1)
我刚刚根据我制作的虚拟文件测试了你的代码。当我将代码放在模块中并将其保留为公共时,它可以工作。但是,当我加入私人模块时 - >像工作表级别模块一样,我得到了你得到的错误。
然而,当我引用私有对象时,代码运行完毕。所以我对你的回答是替换
oExcel.Run "RefreshDataFromIQY"
使用
oExcel.Run "[yourClassName].RefreshDataFromIQY"
另外,我还在我的文件中放置了一个workbook_event。事件在打开时成功触发,因此如果您的问题出现问题,则最有可能出现在事件内的代码中。