Добавление элементов управления в книгу Excel через VSTO сбрасывает все в VBA - PullRequest
2 голосов
/ 28 ноября 2011

У меня есть решение VSTO Excel Addin, которое предоставляет определенные методы VBA через интерфейс ComVisible. Пожалуйста, обратитесь это для примера реализации. Я использую VSTO 4 и Excel 2007/2010 для этого. Некоторые методы открытого интерфейса вставляют элемент управления (кнопку, поле со списком или Winform UserControl) при вызове из VBA. Метод выполняется правильно и также вставляет элемент управления на лист.

public void AddButtonControl(string strControlName)
{
    Microsoft.Office.Interop.Excel.Worksheet nativeWorksheet = Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet;
    Microsoft.Office.Tools.Excel.Worksheet vstoWorksheet = Globals.Factory.GetVstoObject(nativeWorksheet);

    vstoWorksheet.Controls.AddButton(nativeWorksheet.Range["A1", "E5"], strControlName);
}

Теперь, как только элемент управления вставлен в рабочую книгу, все переменные, объявленные в VBA, сбрасываются. Весь код возвращается в состояние, как будто он никогда не выполнялся.

Мое решение и книга Excel доступны для совместного использования здесь

Просто создайте решение и откройте рабочую книгу SampleTest.xlsm Нажмите «Проверить строковое значение», появится окно с сообщением «Текст по умолчанию». Нажмите на кнопку - «Добавить кнопку динамически». Кнопка будет вставлена ​​в верхней части листа. и появится сообщение «Присвоение текста строке: образец текста». Теперь снова нажмите «Проверить строковое значение». Должно было отображаться «Образец текста», но отображается пустое окно сообщения.

Любые предложения / обходные пути приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...