vbScript打开excel但不加载宏/模块?

时间:2012-05-22 18:07:04

标签: excel vba vbscript excel-vba excel-2010

我处于一种非常奇怪的境地。我创建了一个可以打开我的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

然而,从命令行运行它时,它给我运行时错误所需的对象:'关闭'。知道为什么吗?为什么没有关闭?我究竟做错了什么?感谢。

1 个答案:

答案 0 :(得分:1)

我刚刚根据我制作的虚拟文件测试了你的代码。当我将代码放在模块中并将其保留为公共时,它可以工作。但是,当我加入私人模块时 - >像工作表级别模块一样,我得到了你得到的错误。

然而,当我引用私有对象时,代码运行完毕。所以我对你的回答是替换

oExcel.Run "RefreshDataFromIQY"

使用

oExcel.Run "[yourClassName].RefreshDataFromIQY"

另外,我还在我的文件中放置了一个workbook_event。事件在打开时成功触发,因此如果您的问题出现问题,则最有可能出现在事件内的代码中。