Установить форму / inlineshape как декоративную в WordC#

Место общения программистов C#
Anonymous
Установить форму / inlineshape как декоративную в Word

Сообщение Anonymous »

В Office 365 Microsoft представила новое свойство для фигур/InlineShapes (изображения): «Декоративное».
Я могу манипулировать им с помощью VBA, как показано здесь, но не использовать VSTO, а это то, что мне действительно нужно.
Тип значения — Microsoft.Office.Core.MsoTriState, и если если установлено значение msoTrue, это активирует функцию, показанную на рисунке.
Мне удалось легко переключить эту функцию с помощью VBA, как показано здесь (чтобы попробовать, просто вставьте встроенное изображение в пустом документе Microsoft Word 365)

Код: Выделить всё

Sub ToggleDecorativePic()
Dim pic As InlineShape
Set pic = ActiveDocument.InlineShapes(1)
pic.Decorative = Not pic.Decorative
End Sub
Это переключит свойство «Декоративность» первой фигуры InLineShape в активном документе.
Изображение

Изображение

*Но вот в чем проблема:
Мне нужно сделать это из VSTO ( или VB.NET), но свойство .Decorative недоступно в Intellisense, и даже если я попытаюсь принудительно использовать его, приведя объект InlineShape к Dynamic просто происходит сбой при выполнении кода.
Я использую этот пакет Office Interop nuGet для взаимодействия с Word:

Код: Выделить всё

Bundle.Microsoft.Office.Interop
версия 15.0.4569 от 23 октября 2018 г., поэтому она должна быть актуальной. Пакет содержит ресурсы Interop для Microsoft Excel, Outlook, PowerPoint и Word.
Я также пробовал использовать Microsoft.Office.Interop.Word, но ему около двух лет, поэтому он очевидно, не содержит и этой новой функции.
С учетом новых законов ЕС, касающихся доступных документов, это критически важная функция при создании PDF-документов с помощью Microsoft Word.
Альтернативно: можно ли это как-то динамически выполнить как VBA, из VSTO, без создания макросов в документе и т.д.? Я думаю, нет, по крайней мере, без включения доверия к объектной модели, что просто невозможно :-/

Подробнее здесь: https://stackoverflow.com/questions/530 ... ve-in-word

Вернуться в «C#»