【问题标题】:Running excel macro for excel books that does not contain that macro为不包含该宏的 excel 书籍运行 excel 宏
【发布时间】: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"
  • 这对我有用,非常感谢!!!!

标签: excel vba


【解决方案1】:

这是代码的工作示例

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 x1Book = x1App.Workbooks.Open(curDir & "\macro_for_creating_charts")
Set x2Book = x1App.Workbooks.Open(curDir & "\agent_perf.csv")
'x1App.visible = true
x1App.Run "macro_for_creating_charts.xlsm!Macro4"
x1App.ActiveWorkbook.Close(False)
x1App.Quit

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2019-01-17
    • 2015-10-11
    • 2012-06-16
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多