Excel-днк получить глобальные свойства
Я использую Excel-ДНК в качестве базовой функции, затем я вызываю функцию "vsto" из надстройки, чтобы вызвать запрос веб-службы на выбранную функцию. Моя проблема в том, что я хотел бы использовать функцию ДНК для анализа диапазонов, которые будут отправлены в сервис. В настоящее время он возвращает строку ("ожидание вызова службы..."), и, если методы VSTO вызывают функцию, он передает другую переменную для возврата чего-то еще.
Я не могу извлечь что-то кроме строки, объект возвращается пустым, когда я использую "оценивать" в VSTO.
Я думаю, что лучшим способом было бы получить глобальную переменную кэша, хранящуюся в надстройке vsto из функции excel-dna. Я не мог суметь к этому.
Кнопка надстроек push => addins оценивает Excel DNA => Хранить данные ДНК в VSTO Переменная Addin => VSTO вызывает сервис и вставляет возвращаемые данные.
Спасибо,
2 ответа
Хорошо, я узнал о: блог MSN
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 днк:
var application = (Application)XL.ExcelDnaUtil.Application;
var addin = application.COMAddIns.Item(AddinName);
var what = addin.Object;
what.youraddinfunction;
Подход Yoyo, строго говоря, правильный, но для подхода, который является более переносимым, я предлагаю объединить ExcelDNA с NetOffice. Вот фрагмент, чтобы вы начали. Обратите внимание, что вам необходимо очистить ссылки вашего приложения на COM-прокси-объекты в методе OnDisconnection. Для получения более подробной информации, ознакомьтесь с учебником по надстройке Excel надстройки
[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...
}
}