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

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

Как удалить колонтитулы из всех разделов документа

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

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

Станислав спрашивает:

Есть ли возможность удаления всех колонтитулов (верхнего и нижнего), вне зависимости от их содержимого (например, содержащих произвольный текст, разный для каждой страницы)?

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

Sub deleteAllHeaders_Footers()
Dim sec As Section
Dim hf As HeaderFooter
Dim rng As Range
For Each sec In ActiveDocument.Sections
    For Each hf In sec.Headers
        hf.Range.Delete
    Next hf
    For Each hf In sec.Footers
        hf.Range.Delete
    Next hf
Next sec
End Sub

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

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

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

]]>twitter.com facebook Вконтакте Google Buzz google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru]]>

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

  1. Мака
    20.04.2009 в 11:58 | #1

    Здравствуйте. Ваш макрос я использую для обработки документов в теле своего, большего макроса.

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

    После применения макроса он удаляет текст всех колонтитулов, но оставляет их пустыми (на месте колонтитула серый знак абзаца)

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

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

    Подскажите пожалуйста, что добавить в ваш макрос или как его изменить. Спасибо.

  2. Александр
    21.09.2009 в 21:47 | #2

    Приходится копировать текст с исходного документа без колонтитулов и вставлять в новый документ. Очень не удобно.

  3. 22.09.2009 в 00:32 | #3

    У меня получилось убрать отображение пустых колонтитулов переключившись в режим работы колонтитулов, а затем обратно. Макрос. предложенный Антоном, я дополнил:

    Sub deleteAllHeaders_Footers()
      Dim sec As Section
      Dim hf As HeaderFooter
      For Each sec In ActiveDocument.Sections
        For Each hf In sec.Headers
          hf.Range.Delete
        Next hf
        For Each hf In sec.Footers
          hf.Range.Delete
        Next hf
      Next sec
      'Переключаемся в режим отображения колонтитулов
      ActiveDocument.Windows(1).View.SeekView = wdSeekCurrentPageFooter
      'Переключаемся к основному документу
      ActiveDocument.Windows(1).View.SeekView = wdSeekMainDocument
    End Sub

  4. Руслан
    12.01.2010 в 15:03 | #4

    Этот макрос удаляет все колонтитулы во всех разделах документа. А как можно удалить колонтитулы (текст, шейпы и комбобоксы) в конкретном разделе?

    Задача заключается в том, что часто имея документ, приходится вставялть в него (причем, где угодно) страницы другого формата и ориентации. Это все пользователи могут сделать руками, но хочется этот момент автоматизировать. Вроде не вопрос навставлять разрывов, но вот удалить старый колонтитул на вставленной страницы не получается (возврат в созданный раздел выполняю переходом на закладку в его начале).

  5. 12.01.2010 в 16:33 | #5

    Можно вот так

    Sub deleteCurrentHeaders_Footers()
      Dim hf As HeaderFooter
      For Each hf In Selection.Sections(1).Headers
        hf.Range.Delete
      Next hf
      For Each hf In Selection.Sections(1).Footers
        hf.Range.Delete
      Next hf
      'Переключаемся в режим отображения колонтитулов
      ActiveDocument.Windows(1).View.SeekView = wdSeekCurrentPageFooter
      'Переключаемся к основному документу
      ActiveDocument.Windows(1).View.SeekView = wdSeekMainDocument
    End Sub

  6. Руслан
    12.01.2010 в 16:58 | #6

    Попытался применить ваш код. Выдает ошибку "Method or data member not found" на ".Headers" в строке 03 и ".Footers" в строке 06.

  7. 13.01.2010 в 09:23 | #7

    Замените Selection на Selection.Sections(1)

    В комментарий я внёс исправления

  8. Владимир
    26.06.2010 в 17:05 | #8

    при попытке компиляции вываливает ошибку User-defined type not defined

  9. 26.06.2010 в 18:24 | #9

    Владимир, проверьте, что всё правильно скопировалось. Если всё правильно, то приведите текст, который выделяется при ошибке

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

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

^ Наверх