Вызов функции надстройки Excel из рабочей книги Excel VSTO - PullRequest
2 голосов
/ 14 января 2010

Я хочу создать метод в Excel Add-In 2007, который можно вызвать из моего решения Excel Workbook 2007.

Объясняю, я хочу вызвать метод надстройки Excel из кода, стоящего за файлом решения Excel Workbook 2007. И я не хочу использовать VBA Macros.

Пожалуйста, помогите, заранее спасибо

Спасибо, Мринал Джайсвал

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Спасибо большое, что сработало для меня. Бороться с этим уже 2 дня. Я хотел создать новую книгу на лету в Office 2016 с помощью своей надстройки Excel, определенной пользователем.

Просто пример, как я это сделал:

public static void printToExcel(String writeToCell)
{
    Workbook xlWorkbook = Globals.ThisAddIn.Application.Workbooks.Add();
    Worksheet xlWorkSheet = xlWorkbook.ActiveSheet;
    xlWorkSheet.Name = "testSheet";
    xlWorkSheet.Cells[1, 1] = writeToCell;
}
0 голосов
/ 14 января 2010

После долгих поисков я теперь могу ответить сам.

Пожалуйста, выполните следующие шаги,

  1. Объявите интерфейс с функциями, которые вы хотите использовать в своей книге, и установите для его атрибута ComVisible значение true,

Открытый интерфейс ICallMe Sub MyFunction () Конечный интерфейс

  1. Теперь создайте класс, который реализует этот интерфейс, и установите для его атрибута ComVisible значение true, а для атрибута classinterface - значение None, что-то вроде этого,

Открытый класс AddInUtilities Реализует ICallMe

Public Sub MyFunction() Implements ICallMe.MyFunction
    Dim activeWorksheet As Excel.Worksheet = Globals.ThisAddIn.Application.ActiveSheet

    If activeWorksheet IsNot Nothing Then
        Dim range1 As Excel.Range = activeWorksheet.Range("A1")
        range1.Value2 = "This comes from my Add-In"
    End If
End Sub

Конечный класс

  1. 5.Создайте свой проект надстройки с опцией «Регистрация для COM-взаимодействия». Чтобы установить параметр «Зарегистрироваться для Com Interop», перейдите в свойство проекта, а затем перейдите на вкладку «Компиляция» (на VB.net) и установите флажок «Зарегистрироваться для COM-взаимодействия».

  2. Теперь в своем проекте книги Excel добавьте ссылку на эту надстройку и на любое событие вашей книги, например, нажмите кнопку, введите следующий код,

Dim addIn As Office.COMAddIn = Application.COMAddIns.Item ("ImportData")

Слабые утилиты As ImportData.ICallMe = TryCast (addIn.Object, ImportData.ICallMe)

utilities.MyFunction ()

Готово:)

Единственное, что нужно помнить, это то, что не вызывайте функцию надстройки из события запуска вашей книги или листа.

Надеюсь, это поможет вам всем, так как работает для меня.

Спасибо, Мринал Джайсвал

...