#c# #ms-word
#c# #ms-word
Вопрос:
У нас есть существующая устаревшая система, в которой я могу загружать существующие шаблоны, обновлять их и сохранять как документы с моими правками. Вот часть кода.
#region Open existing Template and write something to it.
object missing = Type.Missing;
Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Open(@"C:\test395310.dot", ref missing, true);
doc.Activate();
doc.Variables["CASE PLAN_PLAN_STATUS"].Value = "asdf1";
doc.Variables["CASE PLAN_PROGRAM"].Value = "asdf2";
doc.Fields.Update();
#endregion
Используя аналогичную логику, я пытаюсь создать новый шаблон word с двумя переменными.
private static void CreateTemplate()
{
//have it open word and create a template with fields from gen
object missing = Type.Missing;
Word.Application app = new Word.Application();
Word.Document doc = app.Documents.Add(ref missing, ref missing, true);
doc.Activate();
doc.Variables.Add("CASE PLAN_PLAN_STATUS", "XXXXX");
doc.Variables.Add("ANOTHER ONE", "XXXX");
doc.Fields.Update();
doc.SaveAs2(@"C:\newTemplate.dot");
doc.Close();
app.Quit();
}
Документ создается, однако в Word я не могу найти ни одну переменную. Моя цель — открыть word и разместить в шаблоне с помощью formatting. ie
Plan Status: <<CASE PLAN_PLAN_STATUS>>
Если я нажму вставить / Изучить быстрые части / поле, я смогу увидеть различные варианты, но моих двух переменных там нет. Кто-нибудь знает, где еще посмотреть? Или лучший подход?
Ответ №1:
В вашем шаблоне вы можете использовать поля, изменяемые документально.
https://support.microsoft.com/en-us/office/field-codes-docvariable-field-32a81e22-c5c1-4b16-8097-f0de851db67c?ui=en-USamp;rs=en-USamp;ad=US Это выглядело бы как { DocVariable Case_Plan_Plan_Status } с отображаемыми кодами полей.
В отличие от свойств документа, переменные документа могут быть созданы, изменены или удалены только с помощью vba.
В документе нет встроенных переменных. В пользовательский интерфейс не встроен инструмент для просмотра того, что доступно среди переменных.
Я знаю несколько хороших надстроек для управления ими в пользовательском интерфейсе.
Один из них — старый органайзер сочетаний клавиш Криса Вудмана. http://addbalance.com/word/download.htm#ChrisWoodman Этот позволяет просматривать, создавать, редактировать и удалять переменные из Word, но не создает поле DocVariable, предоставляя это делать вам.
Еще одна утилита — Graham Mayor или Greg Maxey. http://gregmaxey.com/word_tip_pages/cc_var_bm_doc_prop_tools_addin.html или http://www.gmayor.com/BookmarkandVariableEditor.htm Оба этих последних могут добавить поле DocVariable в ваш документ после выбора переменной из списка.