首页 文章

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

提问于
浏览
2

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

我想创建启动Microsoft Excel的Visual Basic脚本vbscript(我的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并打开工作簿并选择所需的工作表后,工作簿的工作表单元格可以成功调用加载项模块中定义的函数 .

1 回答

  • 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
    

相关问题