Visual Basic脚本将Excel工作簿打开到启用了加载项的特定工作表

在装有64位Microsoft Office Professional Plus 2016的Windows 7 Enterprise x64主机上工作。

我想创build启动Microsoft Excel的Visual Basic脚本vbscript (在我的Windows桌面上的文件),打开启用macros的Excel工作簿文件“Workbook.xlsm”,并select/激活该工作簿中的工作表“XYZ”。 所以,我想下面的VB脚本:

' File: test.vbs ' Opens Excel workbook "Workbook.xlsm" to worksheet "XYZ" Set objXl = CreateObject("Excel.Application") Set ObjWb = objXl.Workbooks.Open("C:\Path\To\Workbook.xlsm") objXl.Goto ObjWb.Sheets("XYZ").Range("A1") objXl.Application.Visible = True 

此脚本成功启动Excel,打开指定的工作簿,并select指定的工作表。

但是,包含调用附加模块中定义的一个或多个函数的公式的所有工作表单元格都已损坏; 这些单元格都包含错误值#NAME?

如果我手动closures并重新打开工作簿(不使用脚本),包含调用附加模块中定义的一个或多个函数的公式的工作表单元格均可正常工作。

所以我想知道如何修改我的Visual Basic脚本,以便启动Excel后打开工作簿并select所需的工作表,工作簿的工作表单元格可以成功地调用在加载项模块中定义的函数。

根据Tim Williams的评论,微软的这篇文章描述了这个问题,并解释了如何解决这个问题:

在Excel中使用CreateObject命令时不加载加载项

 ' File: test.vbs ' Opens Excel workbook "Workbook.xlsm" to worksheet "XYZ" Set objXL = CreateObject("Excel.Application") Set ObjWB = objXL.Workbooks.Open("C:\Path\To\Workbook.xlsm") ' Open add-in file 'AddIn.xlam' objXL.Workbooks.Open ("C:\Path\To\AddIn.xlam") objXL.Goto ObjWB.Sheets("XYZ").Range("A1") objXL.Application.Visible = True ' Maximize the window after it opens objXL.Application.WindowState = xlMaximized Set objWB = Nothing Set objXL = Nothing