【问题标题】:It is necessary to write a vbs script to run multiple xlam files in one excel instance需要编写一个vbs脚本在一个excel实例中运行多个xlam文件
【发布时间】:2021-03-29 12:19:56
【问题描述】:

任务是编写 vbs 脚本:

  1. 第一个 vbs 脚本 (1.vbs) 打开一个 excel 实例并将 1.xlam 文件加载到打开的 excel 实例中。
  2. 第二个 vbs 脚本 (2.vbs) 将 2.xlam 文件加载到同一个 excel 实例中。
  3. 下一个 (3.vbs) 加载相同的 excel 3.xlam 实例,依此类推。 我尝试了很多,但是我将新的 *.xlam 加载到新的 excel 实例中,而不是之前打开的实例中。 如何解决问题?

我的 loader1.vbs - 用于加载 loader1.xlsm

   Set omExcel = CreateObject("excel.application") 
   omExcel.Visible = True 
   vmAlertXLSM = omExcel.AutomationSecurity 
   omFile.AutomationSecurity = 1
   vmFile = replace(WScript.ScriptFullName, ".vbs",".xlsm") 
   omExcel.Workbooks.Open vmFile 
   omExcel.AutomationSecurity = vmAlertXLSM 

没关系

我需要编写 loader2.vbs,它将我的 loader2.xlsm 加载到同一个 Excel 实例中,以便在 loader1.xlsm 和 loader2.xlsm 中编写的函数可以互相看到

它不是那样工作的 - 一个新的 Excel 实例打开:

    vmFile = replace(WScript.ScriptFullName, ".vbs",".xlsm")
    With GetObject(, "Excel.Application")
     .Visible = True    
     .Workbooks.Open (vmFile)    
    End With

【问题讨论】:

    标签: vbscript


    【解决方案1】:

    Excel 实例

    您可以在Excel 的新实例中打开文件:

    With CreateObject("Excel.Application")
        .Visible = True
        .Workbooks.Open ("C:\Test1.xlsx")
    End With
    

    您可以在正在运行的实例中打开另一个文件:

    With GetObject(, "Excel.Application")
        .Workbooks.Open ("C:\Test2.xlsx")
        ' Prove that your in the same instance:
        ReDim wbNames(.Workbooks.Count - 1)
        For Each wb In .Workbooks
            wbNames(n) = wb.FullName
            n = n + 1
        Next
        MsgBox "Open Workbooks: " & vbLf & vbLf & Join(wbNames, vbLf)
    End With
    

    【讨论】:

    • 错误是什么,在哪一行?试试omExcel.Workbooks.Open(vmFile)
    • 这就是你的第一步所说的...打开一个excel实例...。对于其余文件,请使用第二种方法:您不需要 prove 部分。
    • 我改变了我的问题 - 那里的所有内容都进行了更详细的描述,并考虑了您的建议
    • 我这样做了 - 我根据您的建议打开了第二个文件 - Excel 的第二个副本打开 vmFile = replace(WScript.ScriptFullName, ".vbs",".xlsm") 和 GetObject(, "Excel.Application") .Visible = True .Workbooks.Open (vmFile) End With
    • 我正在使用Office 2019 64bitExcel 未打开。第一个脚本在Excel 的新实例中打开文件。第二个脚本在Excel 的同一实例中打开第二个文件。有两个窗口,但它是一个实例。您可以打开Windows Task Manager 并查看有多少Excel 实例处于打开状态:每个实例都有不同的PID。您可以使用第二个脚本的Redim... 部分来获取包含当前打开的工作簿的消息框。如果它显示两个工作簿的文件路径,则它们在 Excel 的同一实例中打开。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 2013-08-24
    • 2012-06-24
    • 2014-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多