Настройте ленту в MS Word 2010 с автоматизацией в C#
-
11-10-2019 - |
Вопрос
Я пытаюсь автоматизировать MS Word из моего приложения C# и у меня возникает проблема с изменением пользовательского интерфейса ленты. Все образцы, которые я мог найти, используют интерфейс iribbonextensibility, который доступен только в Addins. Можно ли сделать это с помощью автоматизации?
Решение 2
Что я сделал, так это создал небольшую ATL Addin, который реализует 2 интерфейсы: iDtextensibility2 и iribbonextensibility. Настройка XML просто загружается из файла.
Внутри кода C# кодирование действительно простое:
RegistryKey key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Office\Word\Addins\RibbonLoaderLib.RibbonLoader");
key.SetValue("LoadBehavior",2,RegistryValueKind.DWord);
key.SetValue("Description","Ribbon Loader Add-In",RegistryValueKind.String);
key.SetValue("FriendlyName","Ribbon Loader Add-In",RegistryValueKind.String);
wordApp_.COMAddIns.Item("RibbonLoaderLib.RibbonLoader").Connect = true;
Другие советы
Использование интерфейса iribbonextensibity, которое доступно только в Addins
Это означает, что он не будет работать с помощью автоматизации, интерфейс не выявляется в библиотеке типа вне процесса. Вам придется использовать VSTO, чтобы написать дополнение, используйте шаблон проекта C# + Office + Word 2007, чтобы начать.