среда, 3 августа 2011 г.

Word Поиск и замена в нескольких файлах (VBA)

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


Инструмент сделан на основе документа Word, с помощью кода VBA. Внешне документ выглядит так:

Два поля, с привязанными Bookmark-ами (SearchFor и ReplaceWith) позволяют обратиться к ним из кода:

    searchFor = ThisDocument.Bookmarks("SearchFor").Range.Text
    replaceWith = ThisDocument.Bookmarks("ReplaceWith").Range.Text

Кнопка вызывает стандартный диалог выбора файлов. Для обработки файлов создается отдельный объект Word, который на всякий случай делается видимым:

    Set wordApp = New Application
    wordApp.Visible = True

Выключаются предупреждения:

    Application.DisplayAlerts = wdAlertsNone
    wordApp.DisplayAlerts = wdAlertsNone

Все файлы последовательно открываются, обрабатываются в цикле и закрываются с сохранением.

    For Each FileName In picker.items
        Set wordDocument = wordApp.Documents.Open(FileName)
        With wordDocument.Content.Find
            .Text = searchFor
            .Replacement.Text = replaceWith
            .Forward = True
            .MatchCase = False
            .Execute Replace:=wdReplaceAll
        End With
        wordDocument.Close SaveChanges:=True
    Next




1 комментарий:

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

    ОтветитьУдалить