gpt4 book ai didi

c# - 我如何从 vsto 插件中以编程方式加载自动化插件 (dll)

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:33 24 4
gpt4 key购买 nike

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?错误。我不知道该怎么做。任何帮助将不胜感激。

如果我在调用我的按钮单击方法之前首先尝试通过在单元格中手动键入它来调用 Excel 中的 udf,则工作表填充有效并且 udf 会按预期进行评估,但这并不理想。

此外,将已安装的属性设置为 true 似乎没有任何作用,因为我仍然可以看到 udf 插件在 excel 中处于非事件状态,只有当我将它输入单元格时它才会被激活。我还需要做些什么来激活我的 vsto 启动中的自动化插件吗?

谢谢!

最佳答案

我不确定你想在启动事件中这样做。我之前做过类似但不完全相同的事情可能适用。我在不同的事件处理程序中向 VBA 公开了一些 COM 可见函数:

protected override object RequestComAddInAutomationService()
{
// return something com-visible
}

那么也许您可以尝试以这种方式加载您的自动化 dll?这发生在启动事件触发之前......Excel 可能正在做一些事情,比如在处理启动事件时锁定其加载项列表 - 谁知道呢?如果能知道 Excel 编程就不会那么乏味了。

关于c# - 我如何从 vsto 插件中以编程方式加载自动化插件 (dll),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com