我有一个名为book1的加载项。在插件内部有一个名为module1的模块,它有一个名为addin1
的子组件我想从不同的工作簿中运行宏addin1
我试图像这样调用这个宏:
Call Addin1
但那不起作用
我试过了:
Call book1.xlam.Module1.AddIn1
无效
有没有人知道如何运行加载项中的宏?
答案 0 :(得分:17)
(假设Office 2007) 这是一个例子:
1-打开新工作簿
2-添加包含代码MsgBox("Add-In")
的宏
3-另存为xlam文件。
4-打开新工作簿
5-单击Office按钮 - > Excel选项
6-单击左侧的“加载项”选项卡
7-在底部,在“管理”下拉列表旁边,选择“Excel加载项”,然后单击“转到”
8-单击“浏览”并导航到xlam文件
9-确保选中文件旁边的框,然后单击“确定”
10-单击Office按钮 - > Excel选项。
11-单击“自定义”选项卡
12-在“从下拉列表中选择命令”中选择宏
13-双击AddIn,现在快速访问工具栏上会出现一个按钮
14-单击按钮,现在将显示消息框。
答案 1 :(得分:6)
在你的工作簿中写道:
Sub test()
' from other excel file
Application.Run ("youraddin.xla!ShowForm")
End Sub
在插件中你有
Public Sub ShowForm()
loginform.Show
End Sub
答案 2 :(得分:2)
我相信这就是你要找的:)你需要所有的单引号!在正确的地方,可能有点棘手。
run "'book1'!module1"
答案 3 :(得分:1)
除了Jacob G的回答 - 如果你的.xlam书籍受密码保护,你应该打开它进行编辑(即输入密码)。否则,在“从下拉列表中选择命令”
中将无法看到.xlam书籍的宏答案 4 :(得分:1)
关于如何在已安装的加载项(.xlam)中运行子例程:
确保与加载项关联的VBA项目具有唯一名称(不是VBAProject) - 例如Addin_1。
在您希望从其中调用外接程序的工作簿的VBA项目中,设置对Addin_1的引用。工具>引用,在可用引用列表中找到Addin_1,然后单击相邻的框(出现一个勾号)。
在工作簿的代码模块的子例程中,您现在可以使用以下命令调用加载项的子例程:
Call Addin_1.routine_name(routine parameters)
由于您有对Addin_1的引用,因此在您键入Call Addin_1.
后将显示加载项中子例程的名称,并且在您键入Call Addin_1.routine_name(
后将显示特定子例程的参数列表,这有助于编写无错误的代码。
使用Excel 2013进行测试。当我设置对已安装加载项(.xlam)的VBA项目的引用时,我很好奇地看到发生了什么。我没有看到这个记录。