从 VBA IDE 运行 VBA 例程?
Posted
技术标签:
【中文标题】从 VBA IDE 运行 VBA 例程?【英文标题】:Run a VBA routine from VBA IDE? 【发布时间】:2021-12-21 20:43:11 【问题描述】:我想从 VBA 项目中获取例程列表,然后运行用户选择的宏。
下图显示了原生的“宏”框。我想将此功能扩展到跨多个文档的多个宏。
我发现这个link 解决了问题的第一部分。现在我有了列表,如何按名称运行选定的例程?
【问题讨论】:
Application.Run? 哦,有趣。这看起来像一个 Excel 的东西,我正在 Autodesk Inventor 中编写,但我已经添加了 excel 库,所以它有点工作。但是 - Application.Run 似乎适用于函数,但不适用于子例程......有什么建议吗? 它可以运行 Sub(至少在 excel 中),但我不确定是否在 Autodesk Inventor 中使用。 否 - Application.Run "TestSub" 导致运行时错误 1004(宏不可用) 我认为它不起作用,因为宏不在 Excel 实例中,所以很遗憾,这不适用于您的情况。 【参考方案1】:您好,欢迎来到 SO
以下是如何使用代码执行 VBA 宏的代码示例。您需要添加一些表单来选择要执行的文档和宏。这取决于您的实现。
Sub RunMacroUsingCode()
Dim vbaProjectName As String
vbaProjectName = "InventorVBA"
Dim vbaModuleName As String
vbaModuleName = "m_Tests"
Dim vbaMacroName As String
vbaMacroName = "RunMultipleMacrosTestCall"
Dim vbaProject As InventorVBAProject
For Each vbaProject In ThisApplication.VBAProjects
If vbaProject.name = vbaProjectName Then Exit For
Next
Dim vbaModule As InventorVBAComponent
For Each vbaModule In vbaProject.InventorVBAComponents
If vbaModule.name = vbaModuleName Then Exit For
Next
'Using result is optional
Dim result As Variant
Call vbaModule.InventorVBAMembers(vbaMacroName).Execute(result)
End Sub
Function RunMultipleMacrosTestCall()
Call MsgBox("TEST")
RunMultipleMacrosTestCall = True
End Function
【讨论】:
太完美了——谢谢!以上是关于从 VBA IDE 运行 VBA 例程?的主要内容,如果未能解决你的问题,请参考以下文章