Excel-Dna 获取全局属性

Excel-Dna get globals properties

我使用 excel-dna 作为基本函数,然后我从插件调用 "vsto" 函数来触发对所选函数的 Web 服务请求。我的问题是我想使用 DNA 函数来解析要发送到服务的范围。它 return 当前是一个字符串 ("waiting for service call..."),如果 VSTO 方法调用该函数,它会将另一个变量传递给 return 其他东西。

我无法提取字符串以外的东西,当我在 vsto 中使用 "evaluate" 时,对象返回为空。

我认为最好的方法是从 excel-dna 函数访问存储在 vsto 插件中的全局缓存变量。我无法做到这一点。

插件按钮按下 => 插件评估 Excel DNA => DNA 在 VSTO 插件变量中存储数据 => VSTO 调用服务并粘贴 returning 数据。

谢谢,

好的,我发现了: MSN Blog

namespace AddIn{

    [ComVisible(true)]
    [Guid("****************************")]
    [InterfaceType(ComInterfaceType.InterfaceIsDual)]
    public interface IAddinUtilities
    { void youraddinfunction();
    }

  [ClassInterface(ClassInterfaceType.None)]
    public partial class ThisAddIn : IAddinUtilities
    {
        protected override object RequestComAddInAutomationService()
        { return this; }

        public void yourfunction (){ DoSomething }   
}

在 excel Dna 函数中:

var application = (Application)XL.ExcelDnaUtil.Application;

            var addin = application.COMAddIns.Item(AddinName);
            var what = addin.Object;
            what.youraddinfunction;

Yoyo 的方法严格来说是正确的,但对于更便携的方法,我建议将 ExcelDNA 与 NetOffice 结合使用。这是一个让你开始的片段。请注意,您需要在 OnDisconnection 方法中清除应用程序对 COM 代理对象的引用。有关详细信息,请查看 Excel Addin Portability Tutorial

[ComVisible(true)]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ProgId("Sample.MyAddIn")]
public class MyRibbon : ExcelRibbon
{

   public override void OnConnection(object comApp, ext_ConnectMode ConnectMode, object objAddin, ref Array custom)
   {
     // glue NetOffice + Excel DNA
     m_ExcelApplication = new Application(null, m_ComApplication);
     // other initialization... 
   }
}