【发布时间】:2010-05-11 20:14:40
【问题描述】:
我有一个名为 book1 的加载项。在插件内部有一个名为 module1 的模块,它有一个名为 addin1 的子模块
我想从不同的工作簿运行宏 addin1
我想这样调用这个宏:
Call Addin1
但这不起作用
我试过了:
Call book1.xlam.Module1.AddIn1
这也不起作用
有人知道如何运行插件中的宏吗?
【问题讨论】:
我有一个名为 book1 的加载项。在插件内部有一个名为 module1 的模块,它有一个名为 addin1 的子模块
我想从不同的工作簿运行宏 addin1
我想这样调用这个宏:
Call Addin1
但这不起作用
我试过了:
Call book1.xlam.Module1.AddIn1
这也不起作用
有人知道如何运行插件中的宏吗?
【问题讨论】:
(假设 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- 双击您的插件,现在快速访问工具栏上将出现一个按钮。
14- 单击按钮,您的消息框现在将显示。
【讨论】:
在你的工作簿中你写:
Sub test()
' from other excel file
Application.Run ("youraddin.xla!ShowForm")
End Sub
在插件中你有
Public Sub ShowForm()
loginform.Show
End Sub
【讨论】:
关于如何在已安装的插件(.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 项目的引用时发生了什么时发现。我没有看到这个记录。
【讨论】:
我相信这就是你要找的东西:)你需要所有的单引号和 !在正确的地方,可能有点棘手。
run "'book1'!module1"
【讨论】:
除了 Jacob G 的回答 - 如果您的 .xlam 书籍受密码保护,您应该打开它进行编辑(即输入密码)。否则 .xlam 书的宏在“从下拉列表中选择命令”中将不可见
【讨论】: