问题是您试图在不创建类的情况下引用类方法。
您可以通过三种选择来完成这项工作:
1) 转换ThisAddIn
to a Module
。那么访问就不会出现任何问题Testing123
方法就像你目前拥有的那样。
2) 转换ThisAddin.Testing123
to a Shared
方法,即:
Public Shared Sub Testing123()
然后您将按如下方式访问:
Call ThisAddin.Testing123()
3) 在使用 ThisAddIn 类的方法之前创建其实例:
Dim oAddIn As New ThisAddIn
Call oAddIn.Testing123()
Update
看来插件的处理方式与标准类不同。
这篇 MSDN 文章 http://msdn.microsoft.com/en-us/library/bb608621.aspx包含从其他类型的解决方案访问 AddIn 功能的具体实施指南。
根据本文,您需要执行几个额外步骤:
1) 创建一个接口来公开您的 AddIn 的功能:
<ComVisible(True)> _
Public Interface IAddInUtilities
Sub Testing123()
End Interface
2) 将实用程序类添加到您的插件项目中:
<ComVisible(True)> _
<ClassInterface(ClassInterfaceType.None)> _
Public Class AddInUtilities
Implements IAddInUtilities
Public Sub Testing123() Implements IAddInUtilities.Testing123
System.Windows.Forms.MessageBox.Show("It Works!")
End Sub
End Class
3) 将以下内容添加到 ThisAddIn 以向外部调用者公开实用程序:
Private utilities As AddInUtilities
Protected Overrides Function RequestComAddInAutomationService() As Object
If utilities Is Nothing Then
utilities = New AddInUtilities()
End If
Return utilities
End Function
4)我有点不清楚最后一步所需的确切语法,因为我没有在办公室安装自动化,但您需要按照以下方式做一些事情:
' OutlookTest should be changed to the name of the project ThisAddIn is in
Dim addIn As Office.COMAddIn = Globals.ThisAddIn.Application.COMAddIns.Item("OutlookTest")
Dim utilities As OutlookTest.IAddInUtilities = TryCast( _
addIn.Object, OutlookTest.IAddInUtilities)
utilities.Testing123()