Как развернуть код C # и сценарии VBA в одном модуле Word - PullRequest
7 голосов
/ 18 февраля 2010

Основная проблема, которую я пытался решить, заключается в применении пользовательских привязок клавиш для внутренних методов надстройки Word VSTO (разработано в C #):

Globals.ThisAddIn.Application.KeyBindings.Add(  
    Word.WdKeyCategory.wdKeyCategoryCommand,  
    "MyMethodName",  
    myKey,
    ref _missing,  
    ref _missing);

Проблема в том, что этот код всегда вызывает исключение, потому что (Microsoft MSDN): «в объектной модели или приложении Word нет способа привязать что-либо, кроме макросов VBA».

То, что пытаются сделать другие разработчики, - это реализовать обходной путь с помощью метода VBA, который назначает привязки клавиш для обратных вызовов VBA при загрузке надстройки и вызывает C # addin из этих обратных вызовов по очереди. (подробнее см. вызов VBA из C # )

Эта идея имеет шанс на жизнь: .NET AddIn и VBA-шаблон Word с поддержкой. Но в моем проекте мне нужно доставить это дополнение в одном пакете Click Once на компьютеры конечных пользователей (внутри корпоративной сети, где настройки безопасности не являются проблемой).

Итак, вопрос таков: как создать смесь сценариев C # Add-In (Ribbon) и VBA в одном пакете развертывания?

Кто-нибудь может поделиться таким опытом?

Ответы [ 3 ]

1 голос
/ 19 февраля 2010

А вот и мы!

Пошаговое руководство. Развертывание нескольких решений Office в одном установщике ClickOnce для .NET Framework 3.5.

Много ручной работы. Но идея состоит в том, чтобы обновить пакет ClickOnce дополнительными зависимостями (отредактируйте манифест XML). Стандартная программа установки ClickOnce сделает все остальное за вас.

0 голосов
/ 16 июня 2010

Я задал ваш вопрос команде разработчиков ClickOnce. Он сказал, что вы можете включать сценарии в развертывание VSTO и выполнять действия после развертывания с надстройкой VSTO, если вы нацелены на .NET 4.0. Он сказал, что вы также можете сделать это с помощью функций VBA Interop в VSTO. Вы нацелены на .NET 4.0?

0 голосов
/ 09 июня 2010

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

...