在已打开的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
,不会出现提示。