从Visual Studio中调用Excel工作簿中的VBA宏

问题描述 投票:2回答:1

我有一个excel工作簿,当单击一个按钮时,它会运行一些VBA代码。我想打电话的功能如下所示。我想使用VB从Visual Studio调用该函数。有没有办法制作工作簿的实例并调用函数? (函数需要Excel加载项,这就是我需要工作簿的原因。)先谢谢你们。

Private Sub CommandButton2_Offline_Click()
excel vba vb.net visual-studio excel-addins
1个回答
1
投票

想要调用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"ModuleName.GoOffline"作为参数。

至于制作工作簿的实例,有一个工厂方法:Workbooks.Open - 你的.NET代码需要有一个Excel.Application实例来使用。

© www.soinside.com 2019 - 2024. All rights reserved.