Как предотвратить изменение / удаление пользовательских свойств пользователем (MS Office) - PullRequest
0 голосов
/ 11 июня 2019

Я создаю надстройку для MS Word, и одной из функций является создание и настройка свойства документов. К сожалению, пользователь может перейти к свойствам документа в MS Word и изменить значение или даже удалить свойство.

Я думал о том, чтобы сохранить свойство со значением и установить его перед каждым сохранением документа. Но возможно ли перехватить событие BeforeSave в коде надстройки?

Другой способ, который я принимал во внимание, - это некое свойство / значение только для чтения, но только для чтения для пользователя и редактируемое для надстройки. Но опять же, это, вероятно, невозможно ...

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

У кого-нибудь есть идеи, как это решить? Спасибо.

        Microsoft.Office.Core.DocumentProperties properties;
        properties = (Microsoft.Office.Core.DocumentProperties)
            Globals.ThisAddIn.Application.ActiveDocument.CustomDocumentProperties;

        properties.Add("PropName", false,
            Microsoft.Office.Core.MsoDocProperties.msoPropertyTypeString,
            "PropValue");

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Вы также можете хранить вещи в настраиваемом XML , единственный способ, которым можно редактировать, - это редактирование файла docx вне Word.Однако его нельзя использовать в полях.

0 голосов
/ 11 июня 2019

Получается, что есть возможность отлавливать события Save в надстройке.Это можно решить, поместив обработчик: Globals.ThisAddIn.Application.DocumentBeforeSave в ThisAddIn_Startup.

Итак, я постараюсь решить мою проблему, сохранив имя и значение свойства, и всегда, перед сохранением документа, проверяю, существует ли свойство и устанавливаю ли ИЛИ создаю его и сохраняюзначения (или удалять и создавать без проверки - не имеет значения).

С уважением, Конфузд

...