vba - 在已经打开的 excel 上使用 VBS 运行宏

标签 vba excel vbscript

我想使用 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/

相关文章:

regex - VBScript RegExp 对象中模式的语法是什么?

loops - Excel VBA 中的循环

excel - 四旅制调度算法

excel - 如何在excel vba中添加段落或中断

excel - 如何隐藏选项卡并使它们在选择特定选项按钮后出现?

excel - 为什么 RANK 函数排名不正确?

sql-server - 请求的 OLE DB 提供程序 Microsoft.ACE.OLEDB.16.0 未注册。如果未安装 32 位驱动程序,请以 64 位模式运行该包

java - 写入大格式 Excel (.xlsx) 时出现 Zip-bomb 异常

vbscript - 从另一个 .VBS 文件创建类的实例(驻留在 B.vbs 中)

google-chrome - 如何使用 UFT 自动化 Chrome 扩展