VBScript打开Excel,但不加载macros/模块?

我在一个非常奇怪的情况。 我创build了一个可以打开我的excel文件的vbs脚本。 我已经在WorkBook_open方法中定义了vba代码。 我以为创build一个VBS脚本来打开我的Excel将调用我的工作本方法,并执行其中的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 

在debugging时,它在oExcel.Run“RefreshDataFromIQY”失败,说明macros不可用或禁用。 因此,代码只是成功地实现了excel应用程序,就是这样。 我在module1,module2中有macros代码。 在下面的vbs脚本中,我怎么写/如何执行我的macros。 我的macros/模块必须按顺序执行,我的一些macros是logging的macros。 任何帮助深表感谢。 谢谢。

感谢您的input斯科特。 以下是我对代码进行的更改

 Dim oExcelApp Dim oExcelWkb set oExcelApp = createobject("Excel.Application") set oExcelWkb = oExcelApp.Workbooks.Open("\\myserver\data_extracts\TestTOPTMay307.xlsm") oExcelWkb.Close True oExcelApp.Quit 

然而,从命令行运行它,它给我的运行时错误对象需要:“closures”。 任何想法为什么? 为什么它不能closures? 我究竟做错了什么? 谢谢。

我只是用我制作的一个虚拟文件来testing你的代码。 当我把代码放在一个模块里面并且把它作为公共的时候,它就起作用了。 但是,当我把一个私人模块 – >像工作表级模块,我得到了你得到的错误。

但是,当我引用私人对象时,代码就会通过。 所以我对你的回答是replace

 oExcel.Run "RefreshDataFromIQY" 

 oExcel.Run "[yourClassName].RefreshDataFromIQY" 

另外,我还在我的文件中放置了一个workbook_event。 事件触发成功,所以如果遇到问题,最有可能发生在事件代码中。