如何在 VBA 中运行 Excel Add-in 中的代码

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/stone0823 https://blog.csdn.net/stone0823/article/details/82958100

Excel Add-in 指使用 VBA 编写并且保存在 xlam 文件中的加载项(也经常被称作加载宏)。将 VBA 代码分散在各个 Excel 文件中不利于代码的管理,微软新的加载项编写技术 Web Add-in 也希望代码的部署由分散到集中。用 VBA 编写的代码,如果存放在独立的 Excel Add-in 文件中,一定程度上也是集中管理的方法。

那么,放在 xlam 的代码,其他的工作薄在 VBA 中如何调用其中的代码呢?本文做一个简单的说明。

新建一个工作簿,另存为 xlam (Excel 加载宏) 格式。Excel 对于加载宏,会默认一个存储位置,您可以手工改变存储的位置。保存在默认位置的加载宏,在 Excel Ribbon 菜单项的 开发者工具 -> 加载项 将自动出现;不在默认位置的加载宏,需要通过浏览按钮来选择。

打开 StoneUtils.xlam,在打开状态下,没有工作表,所以界面看起来是空的。通过快捷键 Alt + F11 进入 VBE 环境,插入一个模块,将模块命名为 TestModule。在 TestModule 中编写如下代码:

Public Function About() As String
    About = "Developed by Stone " & VBA.vbCrLf & " Version 1.0, 2018"
End Function

显示一条信息。

关闭加载项文件,另外打开一个 Excel 工作簿。通过 开发者工具 -> 加载项,选中 StoneUtils 加载宏:

进入 VBE 环境,我们可以看到,在左边的工程文件夹中,打开的工作表和 StoneUtils 的工程都叫 VBAProject,这可不好区分,我们需要将 StoneUtils 的 VBA Project 改一个名字。

接下来在 VBE 中添加对 StoneUtils 的引用:

扫描二维码关注公众号,回复: 3829693 查看本文章

然后在工作簿1中编写测试子例程如下:

Public Sub test_about_info()
    Dim info As String
    info = StoneUtils.TestModule.About()
    Debug.Print info
End Sub

运行,在立即窗口中打印出如下信息:

第二种方法,使用 Application.run():

Public Sub test_about_info_method2()
    Dim info As String
    Dim addinPath As String
    addinPath = Application.UserLibraryPath
    info = Application.Run("'" & addinPath & "StoneUtils.xlam'!About")
    Debug.Print info
End Sub

注意,工作簿文件需要用单引号包围(定界符)。第二种方法不局限于 xlam 文件,普通的 xlam 文件也可以。

猜你喜欢

转载自blog.csdn.net/stone0823/article/details/82958100