2017-08-27 136 views
2

我想使用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运行,我将获得“保存更改窗口”并将该表保存为副本。

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

回答

0

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

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

+0

仍然要求每当我运行代码时保存更改 – acr

+0

@acr在关闭之前使用'.Save'方法,我更新了答案。 – omegastripes

相关问题