【问题标题】:Run a macro using VBS on already opened excel在已打开的 Excel 上使用 VBS 运行宏
【发布时间】:2017-08-27 16:34:14
【问题描述】:

我想使用 VBS 代码在 Excel 上运行宏。我的 Excel 将始终打开。我正在使用下面的代码。

Excel:main.xlsm,宏名称:Inc

Option Explicit
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("E:\Main.xlsm", 0, False)
xlApp.Run "Inc"
xlBook.Close
xlApp.Quit

Set xlBook = Nothing
Set xlApp = Nothing

WScript.Quit

问题是每当我运行代码时,看起来 Excel 都试图以只读模式打开。一旦 VBS 运行,我就会得到“保存更改窗口”并将工作表另存为副本。

我想将更改保存在同一张纸上,而不是另存为新副本。

【问题讨论】:

    标签: vba excel vbscript


    【解决方案1】:

    Excel 允许您保存副本,因为您创建了 Application 对象的新实例,因此您再次以只读模式打开工作簿。要使用已打开的工作簿获取对特定正在运行的 Excel 实例的 Application 对象的引用,您应该使用以下行:

    Set xlBook = GetObject("E:\Main.xlsm")
    Set xlApp = xlBook.Application
    

    而不是

    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("E:\Main.xlsm", 0, False)
    

    那么您只需使用.Save 保存该工作簿。

    【讨论】:

    • 在我运行代码时仍然要求保存更改
    • @acr 在关闭前使用.Save 方法,我更新了答案。
    【解决方案2】:

    您正在使用Set xlApp = CreateObject("Excel.Application") 创建一个新实例,然后WB 会打开两次。最简单的解决方法,如果您在执行代码之前关闭WB,那么它应该可以正常工作。同样在关闭使用xlBook.Close SaveChanges:=True 时,应该不会出现任何提示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多