如何在不打开工作簿的情况下运行存储在工作簿中的 VBA 宏



假设我有一个名为 trigger.xlsm 的工作簿,它存储了一个宏,该宏将遍历trigger.xlsm所在的同一目录下的所有其他工作簿,并以某种方式转换它们。

我绝对可以打开trigger.xlsm,并运行宏。但我觉得没有必要先打开trigger.xlsm.我可以在不打开trigger.xlsm的情况下运行宏吗?或者,也许我可以将trigger.xlsm更改为trigger.exe文件,然后单击trigger.exe文件?

如果我必须解析为任何其他编程语言,例如Python(我对Python更熟悉(来完成此操作,建议使用哪些第三方软件包?

顺便说一句,这是一个关于自动化设计的问题,如果您有任何其他想法而不是使用.exe文件,也随时告诉我!

在不创建exe的情况下通过 Excel 的一种方法是创建Office.Interop加载项。有一个startup事件,您可以使用它引用VBA代码并执行Run("nameOfYourMacro")

如果你正在寻找一个python的替代品,这里有同样的问题。我特别喜欢Parfait Gasana的回答,可能对你最有益。

假设您在Workbook_Open()事件上有宏。您可以使用此代码打开该工作簿。

Set objExcel = CreateObject("Excel.Application")
    objExcel.Visible = true
'<~assuming the file to be opened is in the same folder
Set fso = CreateObject("Scripting.FileSystemObject") 
objpath = fso.GetParentFolderName(wscript.ScriptFullName) & "[NameOfWorkbook].xlsx"
Set objWorkbook = objExcel.Workbooks.Open(objpath)

将其粘贴到记事本中,并以.vbs文件扩展名保存它(与您的工作簿位于同一文件夹中(。

相关内容

最新更新