Word 2010 может поле, добавленное через QuickParts, получить идентификатор и позже упомянуть в документе. Коллекция полей
Мне нужно добавить несколько полей в шаблон Word 2010 DOTX, которые должны автоматически заполняться пользовательским содержимым во время выполнения, когда документ открывается в программе C# с использованием служб Word Interop. Я не вижу способа присвоить уникальное имя полям "Спросить" или "Заполнить" при добавлении их в шаблон через опцию меню ленты QuickParts.
Когда я перебираю коллекцию document.Fields в программе на C#, я должен знать, на какое поле я ссылаюсь, чтобы ему можно было присвоить правильное значение.
Кажется, что между предыдущими версиями Word и Word 2010 все изменилось. Поэтому, если вы ответите, убедитесь, что ваш ответ относится к 2010 году. Не думайте, что то, что раньше работало в предыдущих версиях, работает в 2010 году. Очень ценится, поскольку я редко Работайте с Word и почувствуйте себя дураком, когда попытаетесь разобраться в меню ленты в 2010 году.
1 ответ
Вы правы в том, что поля не обязательно имеют встроенный способ уникально отличать себя от других экземпляров полей (кроме его индекса в коллекции Fields). Тем не менее, вы можете использовать свойство Field.Type для проверки wdFieldAsk или wdFieldFillIn. Если это не достаточно узко для идентификатора, то вам нужно будет проанализировать свой собственный уникальный идентификатор из Field.Code. Например, вы можете построить поле FILLIN следующим образом:
{ FILLIN "Hello, World!" MYIDENTIFER }
когда вы перебираете свою коллекцию document.Fields, у вас просто есть тест на наличие идентификатора в строке. РЕДАКТИРОВАТЬ: пример:
For Each fld In ActiveDocument.Fields
If InStr("CARMODEL", fld.Code) <> 0 Then
''this is the carmodel field
End If
Next
Другой вариант - поиск вашего конкретного поля с помощью Find.Text для "^d MYIDENTIFIER" (где ^ d - выражение для "кода поля")
Дайте мне знать, если это поможет, и опишите ваш вопрос, если есть какие-либо пробелы.