从Visual Studio在exel工作簿中调用VBA宏

时间:2018-09-12 14:29:16

标签: excel vba vb.net visual-studio excel-addins

我有一个excel工作簿,当单击一个按钮时,该工作簿会运行一些VBA代码。我要调用的功能如下所示。我想使用VB从Visual Studio调用该函数。有什么方法可以创建工作簿实例并调用函数? (该功能需要Excel加载项,这就是为什么我需要工作簿。)在此先感谢大家。

Private Sub CommandButton2_Offline_Click()

1 个答案:

答案 0 :(得分:1)

想要调用Click事件处理程序意味着一件事:您正在查看在事件处理程序本身中实现的宏。

将其移出。处理程序由它们的事件源调用。 “手动”调用它们是可怕的做法;你不想那样做。更不用说处理程序只能存在于类模块中,这意味着您需要获取该类的对象实例,以便能够找到其公共成员-其 private < / em>成员将变得更加复杂。如果您很幸运,该类是一个工作表模块,那么您可以免费获得它的工作簿范围的实例。

无论如何,最后要做的就是“仅使处理程序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作为参数调用"ModuleName.GoOffline"

关于创建工作簿的实例,有一种工厂方法可用于:Workbooks.Open-您的.NET代码将需要具有一个Excel.Application实例才能使用