Visual Basic脚本将Excel工作簿打开到启用了插件的特定工作表
问题描述:
在安装了64位Microsoft Office Professional Plus 2016的Windows 7 Enterprise x64主机上工作。Visual Basic脚本将Excel工作簿打开到启用了插件的特定工作表
我想创建启动Microsoft Excel的Visual Basic脚本vbscript(在我的Windows桌面上的文件),打开启用宏的Excel工作簿文件“Workbook.xlsm”,并选择/激活工作表“XYZ”在该工作簿中。所以,我woite以下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并打开工作簿并选择所需的工作表后,工作簿的工作表单元格可以成功地调用在加载项模块中定义的函数。
答
按照蒂姆·威廉姆斯的评论,这篇文章从微软描述了这一问题,并解释如何解决这个问题:
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
在倒数第二行,你不应该写'ObjWb。 Sheets'而不是'ObjWbSheets'? – Gurman
当您使用CreateObject激活Excel时,任何加载项都未加载 - 请参阅此处以获取更多信息:https://support.microsoft.com/zh-cn/help/213489/add-ins-do-not-load-when -using-the-createobject-command-in-excel?spid = 2512&sid = 63 –
感谢您指出错字@Gurman。 (FWIW,在我的实际VB脚本源文件中没有该错字。) –