namespace jrjExcel
{
[System.Runtime.InteropServices.ComVisible(true)]
public class MyManagedFunctions
{
public int GetNumber()
{
return 42;
}
}
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
#region VSTO 生成的代码
try
{
this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
this.Application.Run("RegisterCallback", new MyManagedFunctions(), missing, missing, missing, missing, missing
, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing,
missing, missing, missing, missing, missing, missing, missing, missing);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
#endregion
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO 生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要
/// 使用代码编辑器修改此方法的内容。
/// </summary>
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}
然后我在excel的vbe里新建一个模块 里面写上代码
Dim managedObject As Object
Public Sub RegisterCallback(callback As Object)
Set managedObject = callback
End Sub
Public Function GetNumberFromVSTO() As Integer
GetNumberFromVSTO = managedObject.GetNumber()
End Function
可是在excel里数据=GetNumberFromVSTO() vba根本不执行这个宏
如果新建一个宏
public Function AA()
AA = managedObject.GetNumber()
End Function
宏 会执行 但是 执行就报错 managedObject 的值是nothing
有人遇到过类似的问题么 我该怎么解决