Программная вставка поля в колонтитул Word

1. oir 10.10.22 14:07 Сейчас в теме
Стоит задача программно вставить в файл Word в колонтитул поле с VB-типом wdFieldEmpty

wdHeaderFooterPrimary = 1; 
Колонтитул = Док.Sections.Item(1).Footers(wdHeaderFooterPrimary);
Поле = Колонтитул.Range.Fields.Add(???);


Какие параметры у процедуры Add ?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. oir 10.10.22 14:49 Сейчас в теме
(2) Спасибо. Видела. Не могу сообразить как указать тип поля wdFieldEmpty. Если необязательный параметр Type не указывать, то создается поле с типом = "-1". (\* MERGEFORMAT )
3. user1203706 14 10.10.22 14:24 Сейчас в теме
5. user1203706 14 10.10.22 14:58 Сейчас в теме
(2) дык по-умолчанию там и так wdFieldEmpty создаётся, если тип не указывать (-1 это оно и есть, см (2) )

wdFieldEmpty -1 Empty field. Acts as a placeholder for field content that has not yet been added. A field added by pressing Ctrl+F9 in the user interface is an Empty field.
6. oir 10.10.22 15:46 Сейчас в теме
(5)Мне надо запихнуть в колонтитул такой код: {IF {PAGE}={NUMPAGES) "ФИО" ""}, где PAGE и NUMPAGES тоже поля. Предложи идеи, а?
7. user1203706 14 10.10.22 16:11 Сейчас в теме
(6)
такой?

{if{PAGE \*MERGEFORMAT}={NUMPAGES \*MERGEFORMAT}"ФИО" "______________________Вася Иванов"}

? заместо васи подставлять нечто ? ...там так же, через замену сделать можно потом
8. oir 10.10.22 16:34 Сейчас в теме
(7)замена текста в поле в колонтитулах не работает.
НижнийКолонтитул.Range.Find.Execute(НастройкаЗамены.ЗаменяемаяСтрока, , , , , , , , , ОднаПодстрока, 2);
9. user1203706 14 10.10.22 16:51 Сейчас в теме
(7) нижнийКолонтитул у вас как Footers.Item(2) ?
13. oir 10.10.22 17:06 Сейчас в теме
(9)по всякому пробовала и Footers.Item(1) и перебор
Для Каждого Секция Из Док.Sections Цикл
Для Каждого Нижний Из Секция.Footers Цикл
10. user1203706 14 10.10.22 16:52 Сейчас в теме
Так то замена в колонтитулах работает
11. user1278383 5 10.10.22 16:56 Сейчас в теме
doc или docx? Если последнее, можно сделать без com, а тупо разобрать xml
12. oir 10.10.22 17:01 Сейчас в теме
(11) в документообороте и doc, и docx. Замена текста внутри поля колонтитула нигде не работает. Это у них задекларированная "особенность".
15. user1278383 5 11.10.22 07:57 Сейчас в теме
(12) в документообороте можно посмотреть механизм вставки штрихкода. Не уверен, но возможно там используются колонтитулы
14. user1203706 14 10.10.22 17:18 Сейчас в теме
17. oir 11.10.22 10:59 Сейчас в теме
(14)Спасибо большое за помощь!!
16. oir 11.10.22 10:58 Сейчас в теме
В итоге получилось так:

	wdHeaderFooterPrimary = 1; 
	Колонтитул 	= Док.Sections.Item(1).Footers(wdHeaderFooterPrimary); 
	Колонтитул.Range.Select();  
	
	WordApp.Selection.Fields.Add(WordApp.Selection.Range,,, Ложь);
	WordApp.Selection.TypeText("IF ");
	WordApp.Selection.Fields.Add(WordApp.Selection.Range,,"PAGE", Ложь); 
	WordApp.Selection.TypeText("=");
	WordApp.Selection.Fields.Add(WordApp.Selection.Range,,"NUMPAGES", Ложь); 
	WordApp.Selection.TypeText("""Иванов Иван Иванович"" """" ");
Показать


Код вставляет поле в колонтитул, которое отображает "Иванов Иван Иванович" только на последней странице
18. psa247 18 06.10.23 13:54 Сейчас в теме
(16)
wdHeaderFooterPrimary = 1;
Колонтитул = Док.Sections.Item(1).Footers(wdHeaderFooterPrimary);
Колонтитул.Range.Select();

WordApp.Selection.Fields.Add(WordApp.Selection.Range,,, Ложь);
WordApp.Selection.TypeText("IF ");
WordApp.Selection.Fields.Add(WordApp.Selection.Range,,"PAGE", Ложь);
WordApp.Selection.TypeText("=");
WordApp.Selection.Fields.Add(WordApp.Selection.Range,,"NUMPAGES", Ложь);
WordApp.Selection.TypeText("""Иванов Иван Иванович"" """" ");


Спасибо!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот