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

时间:2017-06-16 19:43:07

标签: python excel vba excel-vba

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

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

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

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

2 个答案:

答案 0 :(得分:0)

通过Excel而不创建exe的一种方法是创建Office.Interop加载项。有startup个事件可供您参考VBA代码并执行Run("nameOfYourMacro")

如果您正在寻找python替换here's the same question。我特别喜欢Parfait Gasana在那里的回答,对你来说可能是最有益的。

答案 1 :(得分:0)

假设您在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文件扩展名保存(与工作簿位于同一文件夹中)。