我想使用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运行,我将获得“保存更改窗口”并将工作表另存为副本。
我想将更改保存在同一张纸上,而不是将其保存为新副本。
答案 0 :(得分: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
保存该工作簿。
答案 1 :(得分:0)
您正在使用Set xlApp = CreateObject("Excel.Application")
创建新实例,然后WB
会再次打开。最容易修复,如果您在执行代码之前关闭WB
,那么它应该可以正常工作。关闭使用xlBook.Close SaveChanges:=True
时,也不会出现提示。