Vba word удалить колонтитулы
Hi
Пытаюсь произвести Find and Replase во всем документе в Word2007.
Сама функция из меню Edit - работает с колонтитулами во всем докумнте.
Но записанный макрос - замену в колонтитулах не выполняет .
Сам макрос:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = "111"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Поискав в нете я понял что колонтитулы надо перебрать, или нет.
Подскажите как??
В этом деле я новичек,
2 Ответ от viter.alex 27.01.2010 19:23:19
Перейди в колонтитул и запусти этот макрос
3 Ответ от MaxEngee 27.01.2010 19:44:06
Перейди в колонтитул и запусти этот макрос
Смешно
Вообще у меня внешнее ПО по ActiveX заполняет шаблон в Word. Поэтому перейти может только само ПО.
может подскажеш макрос??
И еще один вопрос можно ли при заполнении шаблона отключить возможность пользовательского ввода(что бы user мышкой не нащелкал когда не надо )
4 Ответ от viter.alex 27.01.2010 19:52:58
Ничего смешного не вижу: перейти в колонтитул можно с помощью SeekView, только нужно указать в какой именно колонтитул.
А чтобы пользователь не тыкал куда не нужно, поставь Application.Visible=False
5 Ответ от MaxEngee 27.01.2010 19:56:21
Ничего смешного не вижу: перейти в колонтитул можно с помощью SeekView, только нужно указать в какой именно колонтитул.
А чтобы пользователь не тыкал куда не нужно, поставь Application.Visible=False
Шаблон состовляется самим юзером поэтому заранее сказать какой именно колонтитул нельзя
User должен видеть как заполняется шаблон.
6 Ответ от viter.alex 27.01.2010 20:16:47
Для эксперимента создай документ с несколькими страницами, задай разные колонтитулы для первой и чётной и нечётной страниц и запусти макрос.
Поскольку каждый колонтитул это Range, то в нём можно вести поиск
Чтобы юзер своими действиями не вмешивался, а только наблюдал, действуй не через Selection, а через Range
7 Ответ от MaxEngee 27.01.2010 20:58:19
все!
С колонтитулами разобрался - надо перебрать.
Спасибо большое.
Остался вопрос только - запретить ввод ползователя.
Через Range вместо Selection - не получится сделать так как идет заполнение таблицы через здвиг курсора. Если пользователь щелкнет мышкой когда не надо - часть данных из таблицы перескочит в жругое место.
Заполнение таблицы происходит следующим образом - курсор ставиться в первую ячейку (по закладке Bookmark) спускается вниз вставляет цифирку --> здвиг курсора вправо + вставка и тд.
Видел свойство Application.Options.AllowClickAndEditMouse - по хелпу должно запрещать ввод, но на практике не пашет
8 Ответ от viter.alex 27.01.2010 21:08:11
Почему не получится? Приведи код, который заполняет таблицу и я попытаюсь его переделать через Range
9 Ответ от MaxEngee 27.01.2010 22:31:52
Почему не получится? Приведи код, который заполняет таблицу и я попытаюсь его переделать через Range
Да код у меня написан на LabView - среда графического програмирования
Поэтому с кодом врядли получиться
Может кто знает как сделать disable Click And Edite.
10 Ответ от Марк 28.01.2010 13:57:40
Hi
Пытаюсь произвести Find and Replase во всем документе в Word2007.
Сама функция из меню Edit - работает с колонтитулами во всем докумнте.
Но записанный макрос - замену в колонтитулах не выполняет .
Сам макрос:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ""
.Replacement.Text = "111"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAllПоискав в нете я понял что колонтитулы надо перебрать, или нет.
Подскажите как??
В этом деле я новичек,
11 Ответ от MaxEngee 29.01.2010 12:06:26
Как искать в колонтитулах уже понятно
Остался один вопрос -
Может кто знает как сделать disable Click And Edite.
Привожу текст из хелпа:
Word Developer Reference
Options.AllowClickAndTypeMouse Property
True if Click and Type functionality is enabled. Read/write Boolean.
Example
This example checks to determine whether Click and Type functionality is enabled. If it isn't enabled, the example sets this functionality based on the user's choice.
Visual Basic for Applications
Но данная фишка у меня вообще не работает .
Может подскажите живые иностранные форумы где могут помочь?
Похожие темы
Find and Replase в колонтитулах
Как многого мы не знаем о такой, казалось бы, вдоль и поперек изученной программе, как Microcoft Word! Наш сайт о Microsoft Office Word даст ответ про: ключ дли ворд 2003. Отличный способ познакомиться с ее тонкими настройками, научиться создавать шаблоны, работать с макросами дает форум сайта Ворд Эксперт. На портале о Microsoft Office Word вы узнаете про: почему при изменинии ориентации страницы сбивается нумерация.
В подразделах форума собраны ответы на типичные вопросы, рекомендации по настройкам и работе с текстом, пути автоматизации работы в приложении. Наш сайт о Microsoft Office Word даст ответ про: как сделать чёрточку над дробью в майкрософте. Здесь вы найдете много готовых решений и научитесь самостоятельно автоматизировать свою работу. Также вы можете поделиться своими наработками с другими пользователями или, наоборот, оставить заявку на решение вашей проблемы. На портале о Microsoft Office Word вы узнаете про: в ворде делать рамку.
страницы
авторство
Как удалить все верхние и нижние колонтитулы в Word?
Обычно вы можете быстро удалить все верхние и нижние колонтитулы из документа Word, просто дважды щелкнув поле верхнего или нижнего колонтитула, а затем сразу же удалить их. Но если в одном документе есть несколько различных верхних и нижних колонтитулов, как удалить их все сразу?
- Удалите верхний и нижний колонтитулы с первой страницы активного документа
- Удалить все верхние и нижние колонтитулы в активном документе
- Удалите все различные верхние и нижние колонтитулы в активном документе с помощью кода VBA
- Удалите все различные верхние, нижние колонтитулы и водяные знаки в активном документе с помощью функции проверки документа
- Удалите все строки заголовка в активном документе с помощью замечательной функции
Remove all horizontal header lines but keep header contents from a whole Word document
With Kutools for Word's Clear Header Lines feature, you can remove all horizontal header lines but keep the header contents from the whole document with only one click. Click to download Kutools for Word!
Kutools for Word: More than 100 handy Word add-ins, improve your work efficiency, free to try with no limitation in 30 days. Click to free trial Now!
Удалите верхний и нижний колонтитулы с первой страницы активного документа
Если вы просто хотите удалить верхний и нижний колонтитулы с первой страницы текущего документа и оставить другие, сделайте следующее:
1. Откройте файл Word и перейдите на первую страницу, с которой вы хотите удалить верхний и нижний колонтитулы, а затем дважды щелкните область заголовка в режиме редактирования.
2. Затем проверьте Другая первая страница под Верхний и нижний колонтитулы вкладку, см. снимок экрана:
3. А затем нажмите Закрыть верхний и нижний колонтитулы для выхода из режима редактирования, и содержимое заголовка на первой странице сразу удаляется. Смотрите скриншот:
Советы: Чтобы удалить нижний колонтитул с первой страницы, повторите вышеуказанные шаги.
Удалить все верхние и нижние колонтитулы в активном документе
Если весь документ содержит только один тип верхнего и нижнего колонтитулов, чтобы удалить их все, приведенные ниже шаги могут помочь вам быстро и легко решить эту проблему.
1. Дважды щелкните заголовок на любой странице, чтобы перейти в режим редактирования, а затем выберите содержимое заголовка, см. Снимок экрана:
2, Затем нажмите Удалить на клавиатуре, а затем щелкните Закрыть верхний и нижний колонтитулы чтобы выйти из режима редактирования, все заголовки в этом текущем документе были немедленно удалены.
Советы: Чтобы удалить все нижние колонтитулы из этого документа, повторите вышеуказанные шаги.
Удалите все различные верхние и нижние колонтитулы в активном документе с помощью кода VBA
Предположим, ваш документ разделен на несколько разделов, и каждый раздел имеет каждый верхний или нижний колонтитул. Итак, в активном документе есть несколько различных верхних или нижних колонтитулов, чтобы удалить все эти различные верхние или нижние колонтитулы, вам необходимо снова и снова применять вышеуказанный метод для удаления верхних или нижних колонтитулов. Здесь я представлю код VBA для решения этой задачи.
1. Откройте файл Word, из которого вы хотите удалить все верхние и нижние колонтитулы, а затем удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий макрос в окно модуля.
Код VBA: удалить все различные верхние и нижние колонтитулы в текущем документе:
3, Затем нажмите F5 ключ для запуска этого кода, все различные верхние и нижние колонтитулы удаляются сразу.
Вкладка Office - переносит интерфейс с вкладками в офис, делает вашу работу намного проще!
Office Tab: Повышает вашу продуктивность на 50% при просмотре и редактировании нескольких документов, помогает сократить тысячи утомительных щелчков мышью, бесплатная пробная версия через 30 дней! Нажмите, чтобы получить бесплатную пробную версию сейчас!
Удалите все различные верхние, нижние колонтитулы и водяные знаки в активном документе с помощью функции проверки документа
Если вы не знакомы с кодом VBA, вы также можете использовать Осмотреть документ функция Word для легкого удаления всех верхних и нижних колонтитулов. Пожалуйста, выполните следующие действия:
1. Нажмите Файл > Инфо > Проверить наличие проблем > Осмотреть документ, см. снимок экрана:
2. Во всплывающем Инспектор документов диалоговое окно, только отметьте Верхний колонтитул, нижние колонтитулы и водяные знаки в диалоговом окне, убедитесь, что другие параметры не отмечены. Смотрите скриншот:
3, Затем нажмите Инспектировать кнопку, после просмотра документа нажмите Удалить все в диалоговом окне, см. снимок экрана:
4. Затем щелкните значок Закрыть Кнопка, все верхние и нижние колонтитулы, а также водяные знаки были удалены из всего документа.
Внимание: Если в документе есть водяные знаки, они также будут удалены.
Удалите все строки заголовка в активном документе с помощью замечательной функции
Иногда вы просто хотите удалить горизонтальную линию под содержимым заголовка, в этом случае я представлю инструмент использования -Kutools for Word, С его Очистить строки заголовка вы можете удалить все горизонтальные строки заголовка из заголовка одним щелчком мыши.
Для использования этой функции, пожалуйста, загрузите и установите Kutools for Word во-первых!
После загрузки и установки Kutools for Word, пожалуйста, сделайте так:
1. Нажмите Кутулс > Удалить > Очистить строки заголовка, см. снимок экрана:
2. Затем появится диалоговое окно, нажмите Да кнопку, см. снимок экрана:
3. И все горизонтальные строки заголовка под заголовком были удалены сразу.
Настоящая документация является предварительной и может быть изменена. В этой статье показано, как использовать классы в Пакет Open XML SDK 2.5 для Office для программного удаления всех верхних и нижних колонтитулов в текстовом документе. В качестве иллюстрации представлен пример метода RemoveHeadersAndFooters.
Чтобы использовать пример кода из этой статьи, необходимо установить Open XML SDK 2.5. Затем необходимо добавить в проект явные ссылки на следующие сборки.
DocumentFormat.OpenXml (устанавливается вместе с пакетом Open XML SDK).
Для компиляции кода из этой статьи также необходимо использовать следующие директивы using или инструкции Imports.
Метод RemoveHeadersAndFooters
Метод RemoveHeadersAndFooters позволяет удалить все сведения о верхних и нижних колонтитулах из текстового документа. Помните, что нужно не только удалить верхние и нижние колонтитулы из хранилища документа, но и удалить из документа все ссылки на них. Пример кода иллюстрирует оба этапа операции. Метод RemoveHeadersAndFooters принимает один параметр строку, которая обозначает путь к нужному файлу.
Полный листинг кода метода можно найти в разделе Пример кода.
Вызов примера метода
Чтобы вызвать пример метода, передайте в качестве первого параметра строку с именем документа, как показано в следующем примере кода.
Как работает код
Метод RemoveHeadersAndFooters работает с указанным документом, удаляя все колонтитулы, а также ссылки на них. Сначала код открывает документ, используя метод Open и указывая, что документ должен быть открыт для чтения и записи (последний параметр со значением true). После открытия документа код использует свойство MainDocumentPart для перехода к основному документу, сохраняя ссылку в переменной docPart.
Проверка наличия колонтитулов
Получив ссылку на часть документа, код определяет, нужно ли ему что-то делать, то есть содержит ли документ колонтитулы. Для этого код вызывает метод Count свойств HeaderParts и FooterParts части документа, и если хотя бы один из них возвращает значение больше 0, то выполнение кода продолжается. Помните, что свойства HeaderParts и FooterParts возвращают объект IEnumerable из объектов HeaderPart или FooterPart соответственно.
Удаление колонтитулов
Получив коллекцию ссылок на колонтитулы, вы можете написать код для удаления каждой из них по отдельности, но пакет Open XML SDK 2.5 позволяет обойтись без этого. Вместо этого вы можете вызвать метод DeleteParts , передавая коллекцию удаляемых частей, — этот простой метод упрощает удаление коллекции частей. Следовательно, следующие строки кода заменяют цикл, который вам пришлось бы писать самостоятельно:
Работа с содержимым документа
На этом этапе код удалил верхние и нижние колонтитулы, но документ еще содержит ссылки на эти части. Прежде чем удалить заброшенные ссылки, код должен получить ссылку на содержимое документа (то есть XML-содержимое основной части документа). После внесения изменений код должен обеспечить их сохранение в явном виде. С помощью следующих двух операторов код должен удалить заброшенные ссылки, как показано в разделе после следующего примера кода.
Удаление ссылок на колонтитулы
Чтобы удалить неработающие ссылки, код для начала получает коллекцию элементов HeaderReference, преобразует коллекцию в список, а затем выполняет в ней цикл, вызывая метод Remove для каждого найденного элемента. Обратите внимание, что код преобразует объект IEnumerable, возвращенный методом Descendants, в объект List, чтобы иметь возможность удалять элементы из списка, а тип HeaderReference, реализованный в пакете Open XML SDK 2.5, помогает ссылаться на элементы типа HeaderReference в XML-содержимом (без этого вам бы пришлось работать непосредственно со сведениями XML-содержимого). Удалив все верхние колонтитулы, код повторяет операцию с нижними.
Пример кода
У меня есть макрос в документе Word, который создает нижний колонтитул на основе закладок. Работает, за исключением одной детали: в одном из полей Ref в нижнем колонтитуле, шрифт всегда неверный после обновления.
Размер должен быть 6, как остальная часть нижнего колонтитула, но 9,5, как оригинальный текст. Это происходит только с одним полем. Я проверил, что знак абзаца и вся строка отформатированы правильно. Я даже скопировал одну из закладок функций и адаптировал их, но размер шрифта всегда неправильный.
Проблема возникает на нескольких компьютерах.
Я отказался от решения исходной проблемы, потому что у меня заканчиваются идеи. Теперь я хочу добавить в макрос некоторый код, который будет применять определенный стиль (или шрифт) к нижнему колонтитулу.
Что я пробовал до сих пор:
- Я создал стиль для нижнего колонтитула (называемый footer1) - до этого он не был определен
- Я баловался с VBA и гуглил несколько часов безрезультатно.
- Отключение / включение переключателей полей слияния в Ref-поле
- Поиск Google для "применить стиль к слову нижнего колонтитула vba"
Спасибо за вашу помощь.
Я могу сделать небольшие изменения в макросах VBA в крайнем случае, но я не эксперт. Я просто не нашел ничего, что мог бы приспособить к своим потребностям.
1 ответ 1
Чтобы изменить размер шрифта для определенного нижнего колонтитула в Word, используйте Range.Font.Size
Синтаксис объяснил
ActiveDocument: объект Document, представляющий активный документ. Другими способами доступа к файлам Word являются Документ (индекс) или Документ ("Полное имя")
,Разделы (индекс). Раздел - это сложное понятие в Word. Пользователи могут вставлять разделы в документ, чтобы они могли изменять форматирование в определенной области документа. Ручные разрывы и разрывы разделят вашу страницу на отдельные разделы, каждый из которых может иметь различное форматирование. Изменение свойств одного нижнего колонтитула не всегда означает, что все нижние колонтитулы изменены.
Читайте здесь для получения дополнительной информации.
В VBA, при использовании Sections.Count в качестве параметра индекса для .Sections(index) , он всегда будет представлять последний раздел вашего документа
,Нижние колонтитулы (индекс): представляет одну область нижнего колонтитула в верхнем, нижнем или боковых полях каждой страницы документа. Другими обычно используемыми свойствами для разделов являются border , header или range который обозначает полное тело в данном разделе.
Колонтитулы (индекс).Диапазон: представляет часть документа, которая содержится в указанном верхнем или нижнем колонтитуле. Обратите внимание на разницу в Sections(index).range
Шрифт.Size: Одно из многих свойств, которые может иметь шрифт. Другими общими свойствами нижних колонтитулов являются Words(index) для изменения конкретных слов, Fields или просто Text для чтения в полном тексте нижнего колонтитула.
Важной особенностью при работе с коллекцией 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, а после, я дам пояснения того, как они работают.
Пример на языке VBSCRIPT:
' ---------------------------------------------------------------------------- ' Коллекция HeadersFooters и классы HeaderFooter ' Колонтитулы в Word ' HeadersFooters.vbs ' ---------------------------------------------------------------------------- Option Explicit dim oWord, oDoc, oSel, i, MyText Set oWord = CreateObject("Word.Application") Set oDoc = oWord.Documents oDoc.Add() oWord.Visible = true Set oSel = oWord.Selection MyText = "Колонтитулы в ворде. " For i=0 to 40 oSel.TypeText MyText & MyText & MyText & MyText & MyText & MyText & MyText oSel.TypeParagraph Next With oDoc(1).Sections(1) .PageSetup.OddAndEvenPagesHeaderFooter = true ' Различные колонтитулы в Word для четных и нечетных .PageSetup.DifferentFirstPageHeaderFooter = true ' Уникальный колонтитул в Word для первой страницы '------------------------------------------------------------------------------------------- ' верхний и нижний колонтитулы в ворде для четных '------------------------------------------------------------------------------------------- .Headers(3).Range.Text = "Заголовок – четные1, 2,4,6. " .Footers(3).Range.Text = "Футер – четные1, 2,4,6. " '------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------- ' нижний и верхний колонтитулы в ворде для нечетных '------------------------------------------------------------------------------------------- .Headers(1).Range.Text = "Заголовок – нечетные1, 1,3,5. " .Footers(1).Range.Text = "Футер – нечетные1, 1,3,5. " '------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------- ' Верхний и нижний колонтитулы в Word для первой страницы '------------------------------------------------------------------------------------------- .Headers(2).Range.Text = "Заголовок" .Footers(2).Range.Text = "Футер" '------------------------------------------------------------------------------------------- End With
Пример на языке JSCRIPT:
В данных примерах все довольно просто, мы создаем новый документ, добавляем в него текст и создаем колонтитулы в Word для четных, нечетных страниц и для первой страницы. Обратите внимание, что через свойство Range мы получаем доступ к остальным классам, которые позволяют вставить текст. При желании, вы можете усложнить программный код, добавив выравнивание текста и прочие параметры форматирования.
Спасибо за внимание. Автор блога Владимир Баталий
Читайте также: