VSTO
VS2008 SP1
.NET 3.5
Excel 2007
我是一个 .net 菜鸟。我正在尝试从 vsto 插件的 ThisAddIn_Startup() 方法中的 vsto 插件中加载一个自动化插件,它是一个 excel 应用程序/自动化插件(它是一个 dll 不是 xla 或 xll)。从谷歌我得到了以下不起作用的解决方案。
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
Application excel = Globals.ThisAddIn.Application;
//Also tried without display alerts being set to false
excel.DisplayAlerts = false;
foreach (AddIn addin in excel.AddIns)
{
if (addin.progID.Equals("MY_ADDIN_PROG_ID"))
{
Debug.WriteLine("Addin installed is " + addin.Installed);
addin.Installed = false;
Debug.WriteLine("Addin is: " + addin.FullName + ", " + addin.progID);
Debug.WriteLine("Addin installed is " + addin.Installed);
}
}
AddIn addIn = excel.AddIns.Add("MY_ADDIN_PROG_ID", false);
addIn.Installed = true;
excel.DisplayAlerts = true;
Debug.WriteLine("Addin is: " + addIn.FullName + ", " + addIn.progID);
Debug.WriteLine("Addin installed is " + addIn.Installed);
excel.DisplayAlerts = false;
//OTHER STARTUP CODE
Debug.WriteLine("Starting up addin!");
}
请注意,我可以看到 addin.installed 在启动时设置为 false 并返回 true 但是当我尝试使用插件中的 udfs 填充工作表时,我尝试在稍后的 button_click 方法中加载,我得到 #NAME?错误。我已经黔驴技穷了。任何帮助将不胜感激。
如果我首先尝试在调用按钮单击方法之前通过在单元格中手动键入 udf 来调用 udf,则工作表填充工作并且 udf 会按预期进行评估,但这并不理想。
此外,将 installed 属性设置为 true 似乎没有做任何事情,因为我仍然可以看到 udf 插件在 excel 中处于非活动状态,只有当我将它输入到单元格中时它才会被激活。我还需要做些什么来激活我的 vsto 启动中的自动化插件吗?
谢谢!