我使用excel-dna作为基本函数,然后从插件调用"vsto“函数来触发对所选函数的web服务请求。我的问题是,我想使用DNA函数来解析要发送给服务的范围。它当前返回一个字符串("waiting for service call..."),如果VSTO方法调用该函数,它会传递另一个变量来返回其他内容。
我不能提取字符串以外的其他东西,当我在vsto中使用"evaluate“时,object返回为空。
我认为最好的方法是从excel-dna函数中获取存储在vsto插件中的全局缓存变量。我没办法做到这一点。
Addins按钮按下=> Addin评估Excel DNA => DNA将数据存储在VSTO and in variable => VSTO调用服务并粘贴返回的数据。
谢谢,
发布于 2017-01-23 16:26:30
好的,我发现了: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;发布于 2017-01-24 21:04:12
严格地说,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...
}
}https://stackoverflow.com/questions/41717352
复制相似问题