假设我有一个名为 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
文件扩展名保存它(与您的工作簿位于同一文件夹中(。