我想使用 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 运行,我就会得到“保存更改窗口”并将工作表另存为副本。
我想将更改保存在同一张纸上,而不是另存为新副本。
最佳答案
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
保存该工作簿。
关于vba - 在已经打开的 excel 上使用 VBS 运行宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45907086/