excel - 是否可以从位于网络文件夹中的文件加载 VBA 代码?
问题描述
我有一个位于网络文件夹中的 .vba 文件,让我们helloworld.vba
在这个文件中调用它我有一个子函数HelloFromTheOtherSide()
。
我正在尝试以可以HelloFromTheOtherSide()
在我的 excel 实例中执行函数的方式以编程方式加载此文件。
想象一下,这是为了简单起见的内容:
Sub HelloFromTheOtherSide()
MsgBox ("hello there!")
End Sub
我已经尝试按照这些说明如何从 Visual Basic 动态添加和运行 VBA 宏,但这不是我在这里想要做的,因为我希望能够运行调用HelloFromTheOtherSide()
.
我试图了解是否可以以编程方式将 .vba 从文件夹加载到 excel 实例中,而我可以在我的实例中运行这些函数。
如果可能的话,这将非常有用,因为我可以将所有 vba 代码存储在一个文件夹中,并在每次我想运行特定的东西时从那里加载它。
解决方案
您可以同时使用VBA或VBScript从另一个调用 aFunction
或 a :Sub
Workbook
VBA
Sub callExternalFunction()
Dim xlApp As Object
Dim xlBook As Object
'Define Excel App
Set xlApp = CreateObject("Excel.Application")
'Open Workbook
Set xlBook = xlApp.Workbooks.Open("\\server\my\path\to\My library.xlsm", 0, True)
'Call my Sub, with eventual parameters (if you don't have any, just call the Routine)
xlApp.Run "Myfunction", "param_1", "param_2"
'Quit and clean
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
VBScript
Sub ExcelMacroExample()
Dim xlApp
Dim xlBook
'Define Excel App
Set xlApp = CreateObject("Excel.Application")
'Open Workbook
Set xlBook = xlApp.Workbooks.Open("R:\my\network\path\My Workbook.xlsm", 0, True)
'Call my Sub, with eventual parameters (if you don't have any, just call the Routine)
xlApp.Run "myRoutine"
'Quit and clean
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
编辑
您可以省略 Excel 应用程序初始化并使用此命令直接调用您需要的宏(感谢@TimWilliams):
Application.Run "'MyBook.xls'!MyMacroName"
注意:如您所见,它们非常相似。这两个代码都经过测试并在我的 Excel 上运行。
希望这可以帮助。
推荐阅读
- android - 使用迁移升级 Room DB 会导致数据库锁定
- optimization - 为什么写入内存比读取 GPU 需要更长的时间?
- android - 在 Android 中使用标准 ISO/IEC 19794-2 注册指纹
- r - 如何在factoextra或ggplot2中设置x轴的总长度
- r - R:使用“lm”拟合线性模型时的对比错误
- angularjs - AngularJS路由测试未知提供者
- sql - 在 SQL Server 中查找重复记录,而且还返回每个记录的唯一键集
- ssl - 如何在树莓派上验证 openssl 证书?
- linux - 用于编辑目录中所有文件的 bash 脚本
- kernel - Jupyter Notebook 中的 SageMath 内核死亡