Свойство пользовательского документа не сохраняется в документе Word - PullRequest
0 голосов
/ 19 февраля 2019

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

private void button_Click(object sender, IRibbonControl control, bool pressed)
{
 Word.Document document = WordApp.ActiveDocument;
 Microsoft.Office.Core.DocumentProperties properties;
 properties = (Microsoft.Office.Core.DocumentProperties)document.CustomDocumentProperties;
 properties["abc"].Value = "newValue";
 document.Save();
}

Здесь, если я закрываю документ и открываю его снова, получаю старое значение, а не новое.

Но если ядобавить пробел в моем документе, а затем сохранить его.Затем значение пользовательского свойства сохраняется.Код:

private void button_Click(object sender, IRibbonControl control, bool pressed)
{
 Word.Document document = WordApp.ActiveDocument;
 Microsoft.Office.Core.DocumentProperties properties;
 properties = (Microsoft.Office.Core.DocumentProperties)document.CustomDocumentProperties;
 properties["abc"].Value = "newValue";
 document.Range(document.Content.End - 1, document.Content.End - 1).Select();
 WordApp.Selection.Range.Text = " ";
 document.Save();
}

Почему такое поведение.Я не хочу добавлять лишние пробелы в свой документ.Пожалуйста, помогите мне в этом.Заранее спасибо.

1 Ответ

0 голосов
/ 19 февраля 2019

Это известная «особенность» ряда приложений Office, а не только Word.Изменение значения свойства документа, но не более того, не «замечается», поэтому оно не сохраняется.В этом обсуждении MSDN .

есть немало деталей. Либо коду нужно добавить что-то в "тело" документа (которое затем можно удалить, но не * 1006).* отменено) или он может явно установить флаг «грязный» на документе, так что Word понимает, что ему необходимо сохранить:

document.Saved = false;
document.Save();
...