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

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

Обновление полей, содержащихся в надписях в колонтитулах

Рубрика: Вопрос-Ответ, Макросы
Метки: | | |
Понедельник, 21 апреля 2008 г.
Просмотров: 7989
Подписаться на комментарии по RSS
Версия для печати

[Ссылки на статью]

Владимир спрашивает:

Нужен макрос для обновления полей в надписях, которые, в свою очередь, размещены в колонтитулах.

Я нашел два подходящих макроса.

Sub upHF()
'Обновление полей в надписях, содержащихся в колонтитулах
Dim oRng As Word.Range  'объявляем объект Word типа Range
Dim oShp As Word.Shape  'объявляем объект Word типа Shape
On Error Resume Next    'игнорируем ошибку
For Each oRng In ActiveDocument.StoryRanges 'для каждого дипазона во всех 
областях активного документа
    Do 'начинаем цикл, пока условие (oRng Is Nothing) не будет выполнено 
(см. внизу)
        oRng.Fields.Update  'обновляем поля
        For Each oShp In oRng.ShapeRange    'для каждого граф.объекта в 
диапазоне
              oShp.TextFrame.TextRange.Fields.Update    'обновляем поля в 
текстовых блоках в граф.объектах
       Next oShp
        Set oRng = oRng.NextStoryRange  'проверяем остальные области 
документа
    Loop Until oRng Is Nothing  'условие
Next oRng
On Error GoTo 0
End Sub

Макрос от Greg Maxey:

Sub myUpdateFields()
Dim rngStory As Word.Range
Dim oShp As Word.Shape
For Each rngStory In ActiveDocument.StoryRanges
    Do
        On Error Resume Next
        rngStory.Fields.Update
        Select Case rngStory.StoryType
            Case 6, 7, 8, 9, 10, 11
                If rngStory.ShapeRange.Count > 0 Then
                    For Each oShp In rngStory.ShapeRange
                        If oShp.TextFrame.HasText Then
                            oShp.TextFrame.TextRange.Fields.Update
                        End If
                    Next oShp
                End If
            Case Else
                'Do Nothing
        End Select
        On Error GoTo 0
        'Get next linked story (if any)
        Set rngStory = rngStory.NextStoryRange
    Loop Until rngStory Is Nothing
Next rngStory
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:

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

  1. 10.02.2010 в 22:49 | #1

    Совершенно случайно мне в голову пришёл вот такой макрос, который подкупает своей простотой.

    Sub UpdateAllFields()
      Application.ScreenUpdating = False
      ActiveDocument.PrintPreview
      ActiveDocument.ClosePrintPreview
      Application.ScreenUpdating = True
    End Sub

  2. 11.02.2010 в 13:44 | #2

    Александр! А как пользоваться этим макросом?

  3. 11.02.2010 в 16:09 | #3

    Т.е.? Поместить в модуль и запустить.

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

  4. 11.02.2010 в 17:11 | #4

    Спасибо!

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

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

^ Наверх