Note: The other languages of the website are Google-translated. Back to English

Как искать и заменять в нескольких файлах словом?

Если у вас есть несколько десятков файлов слов, которые содержат одинаковое содержимое (например, верхний колонтитул, нижний колонтитул, некоторые специальные слова или числа), и вам необходимо заменить одно и то же содержимое в этих документах в Word. Как вам было бы проще сделать это быстро? Конечно, вы можете открывать эти файлы один за другим, чтобы заменить одно и то же содержимое, но это займет много времени и проблем. Это руководство покажет вам сложный способ одновременной замены одного и того же содержимого в нескольких документах Word.

Находите и заменяйте тексты в нескольких текстовых документах одновременно с кодом VBA
Легко находите и заменяйте разные тексты в нескольких документах одновременно с помощью Kutools for Word


Находите и заменяйте тексты в нескольких текстовых документах одновременно с кодом VBA

1. Нажмите другой + F11 для открытия Microsoft Visual Basic для приложений окно.

2. в Microsoft Visual Basic для приложений окна, нажмите ВставитьМодули, затем скопируйте следующий код VBA в окно модуля.

Код VBA: поиск и замена одного и того же контента в нескольких документах одновременно

Sub CommandButton1_Click()
'Updated by Extendoffice 20180625
Dim xFileDialog As FileDialog, GetStr(1 To 100) As String '100 files is the maximum applying this code
Dim xFindStr As String
Dim xReplaceStr As String
Dim xDoc As Document
On Error Resume Next
Set xFileDialog = Application.FileDialog(msoFileDialogFilePicker)
With xFileDialog
    .Filters.Clear
    .Filters.Add "All WORD File ", "*.docx", 1
    .AllowMultiSelect = True
    i = 1
    If .Show = -1 Then
        For Each stiSelectedItem In .SelectedItems
            GetStr(i) = stiSelectedItem
            i = i + 1
        Next
        i = i - 1
    End If
    Application.ScreenUpdating = False
    xFindStr = InputBox("Find what:", "Kutools for Word", xFindStr)
    xReplaceStr = InputBox("Replace with:", "Kutools for Word", xReplaceStr)
    For j = 1 To i Step 1
        Set xDoc = Documents.Open(FileName:=GetStr(j), Visible:=True)
        Windows(GetStr(j)).Activate
        Selection.Find.ClearFormatting
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = xFindStr  'Find What
            .Replacement.Text = xReplaceStr  'Replace With
            .Forward = True
            .Wrap = wdFindAsk
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchByte = True
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        Application.Run macroname:="NEWMACROS"
        ActiveDocument.Save
        ActiveWindow.Close
    Next
    Application.ScreenUpdating = True
End With
MsgBox "Operation end, please view", vbInformation
End Sub

3. нажмите F5 ключ для запуска кода.

4. В дебюте Приложения в окне найдите и выберите документы, которые вы найдете и замените текст внутри, а затем щелкните OK кнопка. Смотрите скриншот:

5. В первом Kutools for Word диалоговом окне введите текст, который вы найдете в документах, в Найти то, что поле, а затем щелкните OK кнопку.

6. В секунду Kutools for Word диалоговом окне введите текст, которым вы будете заменять, и щелкните OK кнопку.

8. Нажмите OK кнопка в следующем Microsoft Word диалоговое окно для завершения поиска и замены.

В этом случае все слова «Word» в выбранных документах заменяются одновременно на «Excel».


Легко находите и заменяйте разные тексты в нескольких документах одновременно с помощью Kutools for Word

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

Kutools for Word : с более чем 100 удобными надстройками Word, бесплатно без ограничений в течение 60 дней.

1. Щелкните Кутулс Плюс > Пакетный поиск и замена для включения функции.

2. в Пакетный поиск и замена диалоговое окно, настройте следующим образом.

  • 2.1) Нажмите Добавить строку под Найти и заменить вкладка;
  • 2.2) В созданных полях строки:
A. Введите текст, который вы найдете, в текстовое поле в Найдите обзор
B. Введите текст, который вы замените, в текстовое поле в Замените столбец;
C. Укажите тип поиска, где искать текст и цвет, чтобы выделить текст по мере необходимости. В этом случае я выбираю Полное соответствие слов, Основной документ и определенный цвет из Тип поиска, Найти в и Выделите колонны;
  • 2.3) Повторите шаги 2.1 и 2.2, чтобы добавить другие тексты, которые вы найдете и замените;
  • 2.4) Нажмите  в Тип файла раздел для добавления документов Word, в которых вы найдете и замените тексты;
  • 2.5) Нажмите Замените or Найдите кнопка. Смотрите скриншот:

Заметки:
1. Если вы щелкните Найдите кнопки, все результаты поиска будут отображаться под Результат предварительного просмотра таб. После предварительного просмотра результатов, если вы хотите заменить все тексты, нажмите Найти и заменить таб. В противном случае закройте диалог.

2. Если вы щелкните Замените все указанные тексты будут немедленно заменены новыми, а результаты также будут отображаться под Результат предварительного просмотра меню.

3. Если вы укажете цвета выделения на шаге 2, все замененные тексты будут выделены указанными цветами, и вы сможете легко найти их в документах.

3. Закрой Пакетный поиск и замена Диалоговое окно

Для получения дополнительной информации об этой функции, пожалуйста, нажмите здесь ....

Если вы хотите получить бесплатную пробную версию этой утилиты, перейдите по ссылке бесплатно скачать программное обеспечение сначала, а затем перейдите к применению операции в соответствии с вышеуказанными шагами.


Рекомендуемые инструменты для повышения производительности Word

 

Kutools For Word - Более 100 расширенных функций для Word, сэкономьте 50% времени

  • Сложные и повторяющиеся операции можно производить разово за секунды.
  • Вставляйте сразу несколько изображений из папок в документ Word.
  • Объединяйте и объединяйте несколько файлов Word из папок в одну в желаемом порядке.
  • Разделите текущий документ на отдельные документы в соответствии с заголовком, разрывом раздела или другими критериями.
  • Преобразование файлов между Doc и Docx, Docx и PDF, набор инструментов для общих преобразований и выбора и т. Д.
Сортировать комментарии по
Комментарии (69)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Будет ли он спрашивать, где находятся рассматриваемые документы? Или все документы должны быть открыты?
Bobette
Этот комментарий был сведен к минимуму модератором на сайте
Когда вы запустите его, по умолчанию откроется диалоговое окно «Открыть файл» в «Мои документы». Перейдите в папку, содержащую файлы Word, в которые вы хотите внести изменения. Вы можете нажать «Ctrl» + «A», чтобы выбрать все файлы, или удерживать клавишу «Ctrl» при выборе определенных файлов. Нажмите «Открыть» или нажмите «Ввод» и наблюдайте, как происходит волшебство.
ПатрикRsGhost
Этот комментарий был сведен к минимуму модератором на сайте
Да, у меня тот же вопрос, так как я думаю, что это было бы полезно, но хочу сказать, чтобы он смотрел только в определенных папках.
Элисон Пеппер
Этот комментарий был сведен к минимуму модератором на сайте
При запуске макроса откроется окно "Открыть". Перейдите в папку, содержащую файлы, в которые необходимо внести изменения, затем щелкните один раз на первом, затем, удерживая нажатой клавишу «Ctrl», щелкните другие файлы, также требующие поиска/замены. Если все файлы в папке нуждаются в действии, просто нажмите клавиши «Ctrl» и «A». Затем нажмите «Открыть» или нажмите клавишу «Enter», и макрос запустится. Я должен предупредить вас, так как я выполнял это десятки раз на работе: макрос приведет к тому, что изменения будут внесены только в *тело* документа Word; заголовки, нижние колонтитулы и текст заголовка/альтернативный текст будут исключены. Если у вас есть текст в вышеупомянутых частях, который необходимо заменить, вам придется выполнить стандартный поиск/замену в отдельных документах.
Патрик
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли адаптировать этот метод VBA для работы с файлами Publisher? Например, изменив *.docx на *.pub?
Джеймс Р.
Этот комментарий был сведен к минимуму модератором на сайте
Вау, ты святой, что собрал этот макрос! Я слушаю «Epic Battle Music» на Songza, потому что я такой макро-кузнец-любитель, и это единственный способ, которым я могу пройти через боль и агонию создания заклинаний программирования. В любом случае, я хочу сказать, что в пятницу я потратил много времени на устранение неполадок в той части, где вы фактически вставляете текст, который хотите найти, и вставляете текст, который хотите заменить - я не совсем понял эту часть в с точки зрения того, где я помещаю свой текст слова «найти» и «заменить» текст слова: [quote]Примечание: вы можете изменить Text = «search», Replace.Text = «find», чтобы указать содержимое для поиска и содержимое подать заявку на замену. [/quote] Сегодня я перечитал это еще раз и хочу с уважением пояснить для других не посвященных в программирование - в разделе VBA, где вы скопировали и вставили исходный язык программирования, убедитесь, что вы поставили конец ' после почему и 'после с (см. пример ниже) - в моем примере я ищу несколько документов, чтобы заменить Pizza на Stromboli: .Text = "Pizza" 'Найти что' .Replacement.Text = "Stromboli" 'Replace With'
Джебидия Спрингфилд
Этот комментарий был сведен к минимуму модератором на сайте
Когда я запускаю его, он зависает и останавливается на: Application.Run macroname:="NEWMACROS", и когда я вхожу в него, он говорит мне, что у меня есть ошибка компиляции: именованный аргумент не найден. Что теперь?
Грег Симонис
Этот комментарий был сведен к минимуму модератором на сайте
Работал как шарм, и это действительно сэкономило мне много времени и усилий. Спасибо.
Муралиск
Этот комментарий был сведен к минимуму модератором на сайте
Я до сих пор не могу заставить это работать на моем ПК под управлением Windows 7. Когда я запускаю его, я получаю сообщение об ошибке в строке: -Windows(GetStr(j)).Активировать сообщение об ошибке. есть: -Ошибка компиляции: -Подпрограмма или функция не определены Любая идея, почему? И как это исправить?
Грег Симонис
Этот комментарий был сведен к минимуму модератором на сайте
Это то, что, наконец, сработало для меня. Я надеюсь, что это помогает. Я добавил этот макрос в файл Word. Он запустит замену любых выбранных документов (вы можете выбрать столько, сколько хотите), когда диалоговое окно файла открыто. Это не будет работать с подпапками, поэтому я сделал каждую папку в файловой структуре отдельно, но это сработало. Возможно, это не лучшее решение, но, по крайней мере, оно работает. Private Sub CommandButton1_Click() Dim MyDialog As FileDialog, GetStr(от 1 до 100) As String '100 файлов — это максимум, применяющий этот код. Измените расширение этого файла на соответствующий тип документа. .Filters.Add "All WORD File", "*.doc", 1 .AllowMultiSelect = True i = 1 Если .Show = -1 Тогда для каждого stiSelectedItem в .SelectedItems GetStr(i) = stiSelectedItem i = i + 1 Next i = i - 1 End If Application.ScreenUpdating = False For j = 1 To i Шаг 1 Установите doc = Documents.Open(FileName:=GetStr(j), Visible:=True) Windows(GetStr(j)).Активировать выделение. Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 'Раздел, а затем один или другой раздел кода.
Пиа Уилсон
Этот комментарий был сведен к минимуму модератором на сайте
Затем вы добавляете один из следующих двух разделов в зависимости от того, является ли он тестом или гиперссылкой для замены '~~> Этот раздел, если он не закомментирован, заменит текст - ТОЛЬКО ОДИН ИЗ ДВУХ РАЗДЕЛОВ МОЖЕТ БЫТЬ РАЗКОММЕНТИРОВАНО СРАЗУ С помощью Selection.Find .Text = " http://www.google.co.uk" 'Найти что .Replacement.Text = "http://www.google.com" 'Заменить на .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = True .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False Конец с выделением. = True End With MsgBox "операция завершена, пожалуйста, просмотрите", vbInformation '~~> Этот раздел, если он не закомментирован, заменит гиперссылки 'For i = 1 To doc.Hyperlinks.Count ' 'Если гиперссылка совпадает. ' Если LCase(doc.Hyperlinks(i).Address) = "http://www.google.co.uk/", то ' 'Измените адрес ссылки. ' doc.Hyperlinks(i).Address = "https://www.google.com" ' 'При желании измените отображаемый текст ссылок. ' doc.Hyperlinks(i).TextToDisplay = "http://www.google.com" ' End If ' Next 'Application.Run macroname:="NEWMACROS" 'ActiveDocument.Save 'ActiveDocument.Close 'Next' Application.ScreenUpdating = True 'End With 'MsgBox "операция завершена, просмотрите", vbInformation End Sub
Пиа Уилсон
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Пиа, я пытаюсь запустить ваш скрипт для замены гиперссылок, но получаю ошибки. Есть возможность выложить скрипт замены всех гиперссылок в 1 штуке? Должно быть, я что-то напутал, когда пытался исправить ваш код.
Сегарн
Этот комментарий был сведен к минимуму модератором на сайте
Он работает только с выбранными файлами, и файлы должны находиться только в одной папке. Это запускается как макрос в документе Word. Он запускается нажатием кнопки. Он только обновляет Word doc. Надеюсь, это поможет. Private Sub CommandButton1_Click() Dim MyDialog As FileDialog, GetStr(от 1 до 100) As String '100 файлов — это максимум, применяющий этот код. Измените расширение этого файла на соответствующий тип документа. .Filters.Add "All WORD File", "*.doc", 1 .AllowMultiSelect = True i = 1 Если .Show = -1 Тогда для каждого stiSelectedItem в .SelectedItems GetStr(i) = stiSelectedItem i = i + 1 Next i = i - 1 End If Application.ScreenUpdating = False For j = 1 To i Шаг 1 Установите doc = Documents.Open(FileName:=GetStr(j), Visible:=True) Windows(GetStr(j)).Активировать выделение. Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 1 To doc.Hyperlinks.Count 'Если гиперссылка совпадает. Если LCase(doc.Hyperlinks(i).Address) = "http://www.yahoo.co.uk/", то "Изменить адрес ссылки". doc.Hyperlinks(i).Address = "https://www.google.co.uk" 'При желании измените отображаемый текст ссылок. doc.Hyperlinks(i).TextToDisplay = "http://www.google.co.uk" End If Next Application.Run macroname:="NEWMACROS" ActiveDocument.Save ActiveDocument.Close Next Application.ScreenUpdating = True End With MsgBox " конец операции, пожалуйста, просмотрите", vbInformation End Sub
мягкая мозговая оболочка
Этот комментарий был сведен к минимуму модератором на сайте
Это сработало отлично и сэкономило мне много времени. Благодарю вас!
Дани
Этот комментарий был сведен к минимуму модератором на сайте
Привет, Это отлично сработало для слова в теле документа, но не заменило то же слово в заголовке. Любые идеи. Спасибо
Джуди
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу изменить формат заменяемого текста. т.е. "Пицца" должна быть заменена на "Бутерброд". Как это может быть достигнуто?
Nilesh
Этот комментарий был сведен к минимуму модератором на сайте
Большое THX 4 код... но также есть проблема с заголовками... без изменений Заранее спасибо
СЛОВОZ
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо, что опубликовали это! Я провел пару тестов и заставил его работать на меня; однако по какой-то причине он не работает с текстом в верхних и нижних колонтитулах. Это можно как-то исправить?
сатена99
Этот комментарий был сведен к минимуму модератором на сайте
Извините, но я понятия не имею о заголовках или формате. Это не было чем-то, что мне нужно было включать в мой код. Я никогда не использовал это раньше, и код, который я разместил, был взят из исходного кода выше, а затем изменен с использованием кода, найденного в других поисках, пока он не заработал. Мне жаль, что я не могу больше помочь.
мягкая мозговая оболочка
Этот комментарий был сведен к минимуму модератором на сайте
Я тестировал его последние несколько минут, и это действительно чудо, спасибо! Мне нужно выполнить несколько процедур «найти и заменить» для нескольких файлов. Десятки подпрограмм для десятков файлов. Есть ли способ «сохранить» модуль, чтобы мне не нужно было снова вставлять его на экран VBA каждый раз, когда мне нужно выполнить новую процедуру?
Мох
Этот комментарий был сведен к минимуму модератором на сайте
Можно ли настроить этот макрос для одновременного выполнения нескольких позиций «найти и заменить»? Есть несколько слов и фраз, которые мне нужно заменить, и на данный момент мне нужно повторно вставлять код VBA для каждого экземпляра. я нуб в этих делах
Марио
Этот комментарий был сведен к минимуму модератором на сайте
Этот код сэкономил мне столько времени... так что спасибо! Однако есть одна вещь - есть ли способ увеличить количество слов, которые макрос находит/заменяет? Мне нужно найти/заменить сразу несколько абзацев, и макрос, похоже, имеет ограничение примерно в 200 символов.
Мило
Здесь еще нет комментариев
Загрузить ещё
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0  Характеристики
Предлагаемые места