在已打开的excel上使用VBS运行宏
问题描述:
我想使用VBS代码在Excel上运行宏。我的Excel将始终打开。我正在使用下面的代码。在已打开的excel上使用VBS运行宏
Excel中:main.xlsm,宏的名称:公司
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运行,我将获得“保存更改窗口”并将该表保存为副本。
我想将更改保存在同一张纸上,而不是保存为新副本。
答
您正在创建一个新的实例Set xlApp = CreateObject("Excel.Application")
,然后WB
然后打开两次。最简单的修复方法,如果您在执行代码之前关闭WB
,那么它应该可以正常工作。当关闭使用xlBook.Close SaveChanges:=True
时,则不会出现提示。
答
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
@acr在关闭之前使用'.Save'方法,我更新了答案。 – omegastripes