Letysite.ru

IT Новости с интернет пространства
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Vba word работа с колонтитулами

Коллекция Word HeadersFooters и объекты HeaderFooter — работа с колонтитулами

Всем привет, с вами автор блога scriptcoding.ru. В данной статье мы рассмотрим коллекцию HeadersFooters и ее объекты HeaderFooter, которые отвечают за редактирование или создание колонтитулов в Word документе.

Важной особенностью при работе с коллекцией HeadersFooters является то, что она содержит в себе не количество классов HeadersFooter для каждой страниц (то есть, если у нас 30 статей в разделе, то это не означает, что у нас 30 колонтитулов в ворде), а количество возможных параметров при работе с колонтитулами в Word, поясню….

В самом документе мы можем вставить верхний колонтитул в ворде или нижний колонтитул в ворде, которые будет отображаться на всех страницах, это понятно. Далее, мы можем указать, что бы для четных и нечетных отображались разные колонтитулы. И, мы можем указать индивидуальный колонтитул для первой страницы Word.

Для доступа к коллекции HeadersFooters используются свойства Headers или Footers, которые указывают: с верхним или с нижним колонтитулом в ворде мы хотим работать . Данные свойства есть у объекта Section, который позволяет обрабатывать нужный раздел. Напомню, что в документ можно вставить несколько разделов, которые будут содержать статьи, обрабатываемые в индивидуальном порядке.

  • Если мы хотим указать, что нужно создавать разные колонтитулы в Word для четных и нечетных, то свойству OddAndEvenPagesHeaderFooter объекта PageSetup нужно присвоить значение true.
  • Если надо создать колонтитул в ворде, который будет уникальным для первой статьи, то свойству DifferentFirstPageHeaderFooter объекта PageSetup присваивается значение true.

Сам процесс создания верхних и нижних колонтитулов в документе Word я рассмотрю в конце статьи, а пока, рассмотрим методы и свойства коллекции HeadersFooters и класса HeaderFooter.

Коллекция HeadersFooters — колонтитулы в ворде

Свойства – верхний колонтитул в ворде

Application — Возвращает объект Application, представляющий приложение Microsoft Word.

Count – Возвращает количество объектов HeaderFooter, данное значение фиксировано и равно 3, так как можно задать три параметры при добавлении колонтитулов в ворд.

Методы – нижний колонтитул в ворде

Item (index) – Позволяет получить доступ к объекту HeaderFooter по его номеру в коллекции.

Index – Данный параметр содержит значения константы WdHeaderFooterIndex:

  • wdHeaderFooterEvenPages — 3 — Все к-тулы, даже на пронумерованных статьях.
  • wdHeaderFooterFirstPage — 2 — Первый к-тул в документе или разделе.

Тут стоит дать некоторое пояснение…. Если вы хотите добавить колонтитулы в Word на все страницы, то для параметра index указывайте значение 3. Если вы хотите создать колонтитулы в ворд индивидуально для четных и нечетных, то указывайте значение 1 для нечетных и 3 для четных, предварительно, нужно использовать свойство OddAndEvenPagesHeaderFooter объекта PageSetup . Если вы хотите указать Word колонтитул только для первой страницы раздела, то используйте значение 2, прописав перед этим свойство DifferentFirstPageHeaderFooter объекта PageSetup .

Класс HeaderFooter – колонтитулы в Word

Объект HeaderFooter содержит в своем арсенале только свойства.

Свойства – работа с колонтитулами в Word

Application — Возвращает объект Application, представляющий приложение Microsoft Word.

Exists – Значение true, если указанный объект HeaderFooter существует. Чтение и запись.

Index – Свойство возвращает значение константы WdHeaderFooterIndex (смотрите выше), которая представляет указанный Word колонтитул в документе или разделе. Только чтение.

IsHeader – Значение true, если указанный HeaderFooter является верхним колонтитулом в ворде и значение false – если нижним колонтитулом в ворде. Только чтение.

LinkToPrevious — Значение true, если указанный колонтитул в Word связан с соответствующим к-тулом в предыдущем разделе. Чтение и запись.

PageNumbers — Возвращает коллекцию PageNumbers, которая представляет все номера страницы, входящие в указанный верхний или нижний колонтитул в ворд.

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

Shapes — Возвращает коллекцию Shapes, представляющую все объекты Shape в нижнем или верхнем колонтитуле в ворд.

Хорошо, теперь, как я и обещал, мы рассмотрим два сценария на языке VBScript и JScript сервера сценариев Windows Script Host, а после, я дам пояснения того, как они работают.

Vba word работа с колонтитулами

972 просмотра

3 ответа

135 Репутация автора

Не удалось найти ответ, который я искал.

Я хочу получить номер текущей страницы String, включая ее формат.
Например: некоторые разделы могут иметь идентификатор главы (1-1), некоторые в римском стиле и т. Д.

Я надеялся получить выбор конкретного нижнего колонтитула, затем перебрать поля и получить данные поля страницы («Вывод — это строка, которую я хочу»).

Насколько я вижу, нет возможности перебрать нижние колонтитулы данного раздела, просто получить общий шаблон и попробовать поработать с ним.
Я знаю wdActiveEndAdjustedPageNumber от Selection.Range.Information , но это только дает мне частичную информацию.

Я ошибся? Есть ли способ работы с конкретным нижним колонтитулом, который я выберу?
Если нет, можете ли вы подсказать мне, как получить следующие данные:

  • Значение ближайшего номера главы
  • Получение значения номера страницы специального формата, такого как латинский алфавитный шрифт (имеется в виду применение формата страницы к wdActiveEndAdjustedPageNumber )

Изменить для уточнения:

В моем шаблоне слова стиль заголовка 1 создает следующий заголовок: глава 1 , затем глава 2 и т. Д.
В формате номера страницы есть возможность включить текущее значение главы в номер страницы.
Например: при условии следующей настройки


в результате появятся эти страницы в < PAGE >поле: 1-1, 1-2, 1-3, . Моя цель — каким-то образом получить всю эту «ценность» для определенного нижнего колонтитула страницы.
Вот фрагмент кода, который не будет работать должным образом:

Результат такого метода — «1-1»
. Причина, по которой он не будет работать, заключается в том, что он может извлечь только первую страницу (или второе использование wdHeaderFooterEvenPages ).

То же самое касается формата римских чисел или любого другого из этого списка.
Для следующих настроек номера страницы я хочу получить значение в определенном нижнем колонтитуле.
Код выше вернет значения для первой или второй страницы, и все.

Есть ли способ получить доступ к любому нижнему колонтитулу в документе и выполнить мой пример кода?
Если нет, как я могу получить «значение» номера страницы для любого нижнего колонтитула, который я выберу?
Надеюсь, это понятнее.

Ответы (3)

1 плюс

3903 Репутация автора

Вы не сказали нам, как вы «выбираете» страницу, на которую хотите ссылаться. Предполагая, что он основан на любой странице, выбранной / отображаемой, вы можете использовать что-то вроде следующего для заголовка страницы :

К сожалению, wdSeekCurrentPageFooter возвращает нижний колонтитул следующей страницы !, поэтому вы не можете использовать его для текущего нижнего колонтитула. Следующее, однако, должно работать везде, где находится поле PAGE #:

2 плюса

17544 Репутация автора

Следующее работает для меня, хотя я не уверен, насколько это надежно. Очевидно, что если я запрашиваю нижний колонтитул (или верхний колонтитул) текущего выделения в документе, он вернет информацию для нижнего колонтитула (или верхний колонтитул) этой страницы.

Все становится очень сложно, как только вы начинаете работать с несколькими разделами и другой первой страницей. Я провел некоторое тестирование для этого в приведенном ниже коде, но я бы не стал клясться, что это «рабочий код». Тем не менее, это должно дать вам стартовое место.

2 плюса

17544 Репутация автора

. а иногда мы не видим самый простой способ.

Вставьте поле Page в текущее выделение, прочитайте результат, а затем удалите его снова:

WORD 2010 Macro for Editing Headers & Footers

I have only basic VBA experince and my prior Macro experence was primarily with WORD 2003. Recording Macros used to take GoToFooter (or Edit Footer) Menu Commands and allow subsequent editing. In WORD 2010, this (and many other) commands do not «record» to the Macro (yet when in Record mode, I do get into Edit Footer function).

A research of various VBS options shows several ways to create Footers and to make global Footer setting changes within Macro. However If I simply want to Revise the Company name within the Footer (for example), I can find no way to do this within a Macro subroutine.

This subroutine is one that I would call from the Main Macro that is stepping through each file in a Folder (& subfolders). I have the main Macro functioning.

Does WORD 2010 Macro-VBA preclude simple Edit-Footer function?

Thanks in advance

So, thanks to Issun, here is my solution:

Создан 15 ноя. 11 2011-11-15 03:44:47 Dan

2 ответа

Here is a way you can access the headers/footers via VBA. As you can see, it’s rather complicated syntax to get to something so simple :p there

Here is a link to example code on how to change the headers in every file in a folder. It takes a different approach and I have never tried it, but for your reference: http://www.vbaexpress.com/kb/getarticle.php?kb_id=45

Создан 15 ноя. 11 2011-11-15 06:50:01 aevanko

Thanks!! I had seen this syntax and presumed that it essentially completely replaces the Header &/or Footer with «FUBAR» material [ 🙂 ] . still not allowing me to pick & choose my edits withint he Footer (like replacing the first 3 words or the last word, etc). So each file has a unique page numbering scheme (not Field-Coded) so complete replacement is not an option I have envisoned a work-around for. – Dan 15 ноя. 11 2011-11-15 16:34:08

THANKS (again). A combination of your suggestion and the link provided lead me to me fix. Here is the «simple» routine to allow me to get into the Footer(s) and edit portions. Sub Sub_FTR_0() ‘ ‘ Sub_FTR_0 Macro ActiveDocument.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter For i = 1 To ActiveDocument.Sections.Count ‘(REM) Add: FOOTER EDIT Selection.[cmds] If i = ActiveDocument.Sections.Count Then GoTo Line1 ActiveDocument.ActiveWindow.ActivePane.View.NextHeaderFooter Line1: Next ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument End Sub – Dan 15 ноя. 11 2011-11-15 19:58:27

‘code’ Sub Sub_FTR_0() ‘ ActiveDocument.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter For i = 1 To ActiveDocument.Sections.Count ‘(REM) Add: FOOTER EDIT Selection.[cmds] If i = ActiveDocument.Sections.Count Then GoTo Line1 ActiveDocument.ActiveWindow.ActivePane.View.NextHeaderFooter Line1: Next ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument End Sub ‘code’ – Dan 15 ноя. 11 2011-11-15 20:09:00

Glad it helped. Post your new code in your question so users can see your solution and if my answer worked, you can click in the check mark in the upper left of it to ‘accept’ it. 🙂 – aevanko 16 ноя. 11 2011-11-16 00:19:50

How can i set aliment? – Nashir Uddin 12 сен. 17 2017-09-12 07:30:07

Колонтитулы в Word

В Microsoft Word есть различные типы верхних или нижних колонтитулов по умолчанию, которые вы можете вставить в свои документы. Кроме того, если вам нравится, вы также можете создать свой собственный. Вот несколько простых шагов.

Как вставить колонтитул?

  1. Нажмите «Вставка» на панели инструментов MS Word в верхней части документа.
  2. Выберите «Верхний колонтитул» или «Нижний колонтитул». В раскрывающемся меню выберите формат области, которую вы хотите вставить в документ, и дважды щелкните модель.

  1. Введите текст в поле «Введите текст.

  1. Закройте верхний или нижний колонтитул, когда закончите. Верхний и нижний колонтитулы будут появляться на каждой странице вашего документа.

Колонтитул только на первой странице

  1. Дважды щелкните область верхнего или нижнего колонтитула первой страницы.
  2. Нажмите вкладку «Конструктор» на появившейся панели инструментов.
  3. В группе «Параметры» установите флажок «Особый колонтитул для первой страницы».

  1. Отредактируйте верхний и нижний колонтитулы первой страницы. Если вы не хотите иметь верхний или нижний колонтитул на первой странице, удалите текст из полей верхнего и нижнего колонтитула и закройте поля.

Как удалить колонтитул

Для того чтобы убрать колонтитул в ворде есть два способа.

  1. Активируйте двойным щелчком поле верхнего или нижнего колонтитула, выделите все содержимое, которое у вас находится в колонтитуле и нажмите клавишу «DELETE» или «BACKSPACE».
  2. Или перейдите на вкладку «Вставка» найдите там Нижний колонтитул» или «Верхний колонтитул» в зависимости от того какой вы хотите очистить, а затем выберите пункт «Удалить нижний колонтитул» или «Удалить верхний колонтитул».

Как изменить колонтитул

Для внесения изменений в колонтитул, вы можете выбрать любой из пунктов описанный ниже:

  • дважды кликнуть по нижнему или верхнему колонтитулу, после чего вы можете вносить изменения в него;
  • или перейдите во вкладку «Вставка» найдите «Нижний колонтитул» или «Верхний колонтитул» и нажмите кнопку «Изменить нижний колонтитул» или «Изменить верхний колонтитул».

Колонтитул только на одной странице

Для решения такой задачи вам необходимо выполнить следующие:

  1. Разбить документ на разделы. Для этого установите курсор в начало заголовка нужной вам страницы, перейдите на вкладку «Макет», и в группе Параметры страниц выберите команду «Разрывы». Откроется меню, в котором выбрать нужный нам пункт в разделе Разрыв разделов, например — Следующая страница.

2. Далее редактируем Колонтитул как описано выше и не забываем отключить опцию Как в предыдущем разделе, эта кнопка появится когда вы будете редактировать колонтитул.

3. Те же действия нужно повторить для последней страницы второго раздела, и в каждом разделе можно вставлять колонтитул с содержимым, соответствующим этому разделу. Не забудьте отключить опцию Как в предыдущем колонтитуле (описано выше).

Нумерация в колонтитулах

Чтобы сделать нумерацию в колонтитуле выполните следующие шаги

  1. Зайдите в колонтитул дважды щелкнув по нему
  2. С верху в ленте откроется конструктор в левой ее части найдите «номер страницы» в разделе «колонтитулы» и затем выбираете расположение где будет отображаться номер страницы

Это руководство было создано с использованием версии Microsoft Word 2016 года.

VB*: Формирование колонтитулов в книге Excel(номера страниц).

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщения 5

1 Тема от BeS Yara 2011-06-24 11:27:53

  • BeS Yara
  • Разработчик
  • Неактивен
  • Рейтинг : [ 1 | 0 ]

    Тема: VB*: Формирование колонтитулов в книге Excel(номера страниц).

    Столкнулся с маленькой проблемой при генерации рабочей книги из VB.NET — колонтитулы(«Страница &P из &N») прописанные как в сгенерированнм макросе не отрабатывались(выводилось «Страница из «). Оказалось проблема известна и связана с особенностями локализации различных версий офиса.
    Печать офисных документов:Колонтитулы.
    Суть решения в том чтобы прописать варианты и для русского кода и для английского:

    Неправильные с точки зрения конкретной версии офиса коды игнорируются и на выходе получаем «Страница 1 из 351».

    P.S. В целом весьма любопытная статья по генерации html-документа для открытия в офисе — может кому-нибудь окажется полезна.
    P.P.S. Отдельная анонимная благодарность пользователям SQL.RU, в чьём обсуждении я наткнулся на эту замечательную ссылку

    2 Ответ от JSman 2011-06-28 23:10:11

    • JSman
    • Администратор
    • Неактивен
Ссылка на основную публикацию
Adblock
detector