【发布时间】:2015-02-27 14:02:00
【问题描述】:
我需要运行我的 excel 文档中不存在的宏,如果可能,它会记录在另一个 excel 文档或另一个文件中。
我尝试打开两本 excel 书,第一本包含该宏,第二本不包含,当我运行该宏时,它说我的 excel 书不包含该宏。
Option Explicit
Dim x1App, x1Book, x2App, x2Book
dim fso
dim curDir
set fso = CreateObject("Scripting.FileSystemObject")
curDir = fso.GetAbsolutePathName(".")
set fso = nothing
Set x1App = CreateObject("Excel.Application")
Set x2App = CreateObject("Excel.Application")
'~~> Change Path here
Set x1Book = x1App.Workbooks.Open(curDir & "\test.xlsm", 0, true)
Set x2Book = x2App.Workbooks.Open(curDir & "\perf.csv", 0, true)
x1App.visible = true
x2App.visible = true
x1App.Run "MyMacro"
x2App.Run "MyMacro"
xlBook.Close
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
WScript.Echo "Finished."
所以我的宏在 test.xlsm excel 文件中,我想在 perf.csv 上运行它。
这样我做不到。有没有其他方法可以做这种员工?
我还将宏导出到文件中,而不是将宏的内容复制到我的 *.vbs 脚本中以直接从它们运行它,但也没有成功。
【问题讨论】:
-
尝试在一个应用程序中打开两个工作簿,而不是像现在这样打开两个。假设您的宏为 activeworkbook 运行,那么其他逻辑应该没问题。
-
还有一件事-您需要调用宏名称,包括以这种方式放置的工作簿名称:
x1App.Run "test.xlsm!MyMacro" -
这对我有用,非常感谢!!!!