excel - 从 Visual Studio 调用 exel 工作簿中的 VBA 宏
问题描述
我有一个在单击按钮时运行一些 VBA 代码的 Excel 工作簿。我要调用的函数如下所示。我想使用 VB 从 Visual Studio 调用该函数。有没有办法制作工作簿的实例并调用函数?(该功能需要 Excel 加载项,这就是我需要工作簿的原因。)在此先感谢各位。
Private Sub CommandButton2_Offline_Click()
解决方案
想要调用Click
事件处理程序意味着一件事:您正在查看在事件处理程序本身中实现的宏。
把它移出去。处理程序由它们的事件源调用;“手动”调用它们是一种糟糕的做法;你不想那样做。更不用说处理程序只能存在于类模块中,这意味着您需要获取该类的对象实例才能定位其公共成员 - 它的私有成员将更加复杂。如果你很幸运,这个类是一个工作表模块,那么你就可以免费获得一个工作簿范围的实例。
无论如何,您要做的最后一件事是“只创建处理程序Public
”并直接调用它。改为重构:
Private Sub CommandButton2_Offline_Click()
GoOffline
End Sub
理想情况下,您应该将该方法放在标准模块中:
Public Sub GoOffline()
'...
' all the code that's currently in CommandButton2_Offline_Click
'...
End Sub
这样,您需要做的就是从您的 .NET 代码中调用Application.Run
with"ModuleName.GoOffline"
作为参数。
至于制作工作簿的实例,有一个工厂方法:Workbooks.Open
- 您的 .NET 代码需要有一个Excel.Application
实例才能使用。
推荐阅读
- angular - AngularFireAuth 和 Ionic 5 登录问题
- node.js - 一段时间内的MongoDB聚合问题
- python - 将字符串标签转换为整数
- reactjs - 您将如何重组此验证程序?
- c++ - 数组中的二进制搜索在以完全相同的方式重写后工作
- ocaml - 反转链式地图?
- apache-kafka - 为什么 Ignite 连接器会抛出 IgniteCheckedException 以重新连接亲和节点?
- google-chrome - 如何使用具有严格组策略的自定义 Chrome 配置文件?
- node.js - 我们可以从 stackblitz 在其他浏览器上启动本地服务器并在其他浏览器上查看它的输出吗?
- node.js - 如何将 React 应用部署到 Azure 应用服务