在已打开的excel上使用VBS运行一个macros

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

Excel:main.xlsm,macros名称: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运行,我将获得“保存更改窗口”并将该表保存为副本。

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

Excel允许您保存一个副本,因为您创build了一个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保存该工作簿。

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