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...
}
}
我使用 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...
}
}