Статьи из блога

Макрос обновления полей в колонтитулах

Если ваши документы содержат колонтитулы (верхние и/или нижние) с включенными в них полями, то возникает ситуация, когда необходимо обновить эти поля. Делать вручную такую операцию не очень удобно. Поэтому можно воспользоваться следующим макросом:

Sub uHeadersFooters()
'Обновление всех полей в колонтитулах активного документа во всех разделах
Dim oSection As Section
Dim HF As HeaderFooter
For Each oSection In ActiveDocument.Sections
   For Each HF In oSection.Headers
      HF.Range.Fields.Update
   Next HF
Next oSection
For Each oSection In ActiveDocument.Sections
   For Each HF In oSection.Footers
      HF.Range.Fields.Update
   Next HF
Next oSection
End Sub

Если вы не знаете, как подключить к документу и применить этот макрос, изучите следующие заметки с сайта:

Создание макроса из готового кода

Автоматическая запись макроса

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

Еще записи по вопросам использования Microsoft Word:

Комментариев: 8

  1. Luna
    13.03.2008 в 21:45 | #1

    Если документ предназначен для печати, то достаточно поставить птичку в Сервис - Параметры - Печать на "Обновлять поля".

  2. Леонид Бродский
    19.03.2008 в 11:33 | #2

    Код можно маленько оптимизировать:

    Sub uHeadersFooters()
    'Обновление всех полей в колонтитулах активного документа во всех разделах
    Dim oSection As Section
    Dim HF As HeaderFooter
    For Each oSection In ActiveDocument.Sections
       For Each HF In oSection.Headers
          HF.Range.Fields.Update
       Next HF
       For Each HF In oSection.Footers
          HF.Range.Fields.Update
       Next HF
    Next oSection
    End Sub

  3. 19.03.2008 в 17:31 | #3

    Да, Леонид, конечно. Спасибо.

  4. Владимир
    22.10.2010 в 15:23 | #4

    Здравствуйте!

    Word 2003 не позволяет просто вставить текстовое поле FORMTEXT в колонтитул.

    Параметр этого поля у меня внешний.

    Может можно сделать эту вставку макросом. Подскажите пожалуйста.

  5. Tim
    02.11.2012 в 17:17 | #5

    В документе 10 разделов, поля в нижних и верхних колонтитулах, поля обновляются не во всех разделах

    выявлена зависимость: не обновляются поля вставленные в надписи

  6. Proektor
    14.06.2013 в 09:01 | #6

    У меня почему то поля не обновляются в колонтитулах, макрос точно рабочий? В колонтитулах поле "Keywords"

  7. Аноним
    07.10.2013 в 06:37 | #7

    Можно воспользоваться тем, что поля обновляются при предварительном просмотре:

    Sub UpdateAllFields()

    Application.ScreenUpdating = False 'Îòêëþ÷åíèå îáíîâëåíèÿ ýêðàíà

    ActiveDocument.PrintPreview 'Ïðåäâàðèòåëüíûé ïðîñìîòð

    ActiveDocument.ClosePrintPreview 'Çàêðûòü ïðåäâàðèòåëüíûé ïðîñìîòð

    Application.ScreenUpdating = True 'Îáíîâèòü ýêðàí

    End Sub

  8. мимоискал
    27.10.2016 в 14:31 | #8

    Аноним +1 :)

    ActiveDocument.PrintPreview

    ActiveDocument.ClosePrintPreview

    очень помогло в колонтитулах обновить , и быстрее чем кодом выше

Оставьте комментарий!

(обязательно)

^ Наверх