Visual Basic脚本,用于在启用了加载项的情况下将Excel工作簿打开到特定工作表

时间:2017-09-23 20:05:46

标签: excel vbscript

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

我想创建启动Microsoft Excel的Visual Basic脚本(我的Windows桌面上的文件),打开启用宏的Excel工作簿文件" Workbook.xlsm" ,并选择/激活工作表" 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,打开指定的工作簿,然后选择指定的工作表。

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

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

因此,我想知道如何修改我的Visual Basic脚本,以便在启动Excel并打开工作簿并选择所需的工作表后,工作簿的工作表单元格可以成功调用添加中定义的函数-in modules。

1 个答案:

答案 0 :(得分:2)

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

Add-ins do not load when using the CreateObject command in Excel

' 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