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

如何在Word中跨多个文件搜索和替换?

如果您有几十个包含相同内容(例如页眉,页脚,某些特殊单词或数字)的Word文件,则需要在Word中的那些文档中替换相同的内容。 您如何更轻松地快速完成工作? 当然,您可以一个个地打开这些文件以替换相同的内容,但这将很耗时且麻烦。 本教程将向您展示一种巧妙的方式来一次替换Word中多个文档中的相同内容。

使用VBA代码同时查找和替换多个Word文档中的文本
使用Kutools for Word轻松一次在多个文档中查找和替换不同文本


使用VBA代码同时查找和替换多个Word文档中的文本

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 下一个按钮 微软Word 对话框以完成查找和替换。

在这种情况下,所选文档中的所有单词“ Word”将同时替换为“ Excel”。


使用Kutools for Word轻松一次在多个文档中查找和替换不同文本

在这里强烈推荐 批量查找和替换 的特点 Kutools for Word。 使用此功能,您可以轻松地同时在多个Word文档中查找和替换不同的文本。 让我们看看如何应用此功能来查找和替换文档中的文本。

Kutools for Word :具有100多个方便的Word加载项, 60天免费试用.

1.请点击 Kutools 加 > 批量查找和替换 启用该功能。

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-Word超过100种高级功能,可节省50%的时间

  • 复杂和重复的操作可以在几秒钟内完成一次处理。
  • 跨文件夹一次将多个图像插入Word文档。
  • 将文件夹中的多个Word文件合并并合并为所需顺序。
  • 根据标题,分节符或其他条件将当前文档拆分为单独的文档。
  • 在Doc和Docx之间,Docx和PDF之间转换文件,用于常见转换和选择的工具集合等...
按评论排序
注释 (69)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
它会询问相关文件的位置吗? 还是所有文件都需要打开?
博贝特
该评论由网站上的主持人最小化
当您运行它时,默认情况下它将打开“我的文档”的“打开文件”对话窗口。 导航到包含要对其进行更改的 Word 文件的文件夹。 您可以按“Ctrl”+“A”选择所有文件,或者在选择某些文件时按住“Ctrl”键。 单击“打开”或按“Enter”,观看奇迹发生。
帕特里克RsGhost
该评论由网站上的主持人最小化
是的,我有同样的问题,因为我认为这很有用,但想告诉它只查看某些文件夹。
艾莉森·佩珀
该评论由网站上的主持人最小化
运行宏时,将打开“打开”窗口。 导航到包含您需要更改的文件的文件夹,然后单击第一个文件,然后在按住“Ctrl”键的同时单击其他也需要查找/替换的文件。 如果文件夹中的所有文件都需要操作,只需按“Ctrl”和“A”键。 然后单击“打开”或按“Enter”键,宏将开始。 我应该警告你,因为我已经在工作中执行了几十次:宏将导致只对 Word 文档的 *body* 进行更改; 页眉、页脚和标题文本/替代文本将被排除在外。 如果上述部分中有需要替换的文本,则必须跨单个文档执行标准查找/替换。
Patrick(英国)
该评论由网站上的主持人最小化
这种 VBA 技术能否适用于 Publisher 文件? 例如通过将 *.docx 更改为 *.pub ?
詹姆斯·R
该评论由网站上的主持人最小化
哇,你把这个宏放在一起真是个圣人! 我在 Songza 上听“史诗般的战斗音乐”,因为我是一个如此业余的宏观锻造师,这是我能够度过制作编程咒语的痛苦和痛苦的唯一方法。 无论如何,我要说的是,我在星期五花了很多时间对您实际输入要查找的文本和输入要替换的文本的部分进行故障排除 - 我不太了解这部分我把“查找”字文本和“替换”字文本放在哪里的条款:[quote]注意:您可以更改 Text = "search", Replacement.Text = "find" 以指定要搜索的内容和内容申请更换。 [/quote] 我今天又读了一遍,我希望恭敬地澄清其他编程非入门者 - 在 VBA 的部分中,您复制并粘贴了原始编程语言,请确保在 什么 和一个 ' 之后 (见下面的例子) - 在我的例子中,我正在寻找多个文件来用 Stromboli 替换 Pizza: .Text = "Pizza" 'Find What' .Replacement.Text = "Stromboli" 'Replace With'
杰比迪亚斯普林菲尔德
该评论由网站上的主持人最小化
当我运行它时,它会挂起并停在:Application.Run 宏名:=“NEWMACROS”,当我进入它时,它告诉我有一个编译错误:找不到命名参数。 怎么办?
格雷格·西蒙尼斯
该评论由网站上的主持人最小化
工作就像一个魅力,它确实为我节省了很多时间和精力。 谢谢。
壁画
该评论由网站上的主持人最小化
我仍然无法让它在运行 Windows 7 的 PC 上运行。当我运行它时,我在以下行收到一条错误消息:-Windows(GetStr(j)).Activate 错误消息。 是:-编译错误:-Sub or Function not defined 知道为什么吗? 以及如何解决?
格雷格·西蒙尼斯
该评论由网站上的主持人最小化
这最终对我有用。 我希望它有所帮助。 我将此宏添加到一个word文件中。 当文件对话框打开时,它将运行替换任何选定的文档(您可以选择任意数量)。 它不适用于子文件夹,因此我单独处理了文件结构中的每个文件夹,但它确实有效。它可能不是最好的修复方法,但至少它有效。 Private Sub CommandButton1_Click() Dim MyDialog As FileDialog, GetStr(1 To 100) As String '100 个文件是应用此代码的最大值 On Error Resume Next Set MyDialog = Application.FileDialog(msoFileDialogFilePicker) With MyDialog .Filters.Clear '~~>将此文件扩展名更改为相关的文档类型。 .Filters.Add "All WORD File", "*.doc", 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 For j = 1 To i 步骤 1 设置 doc = Documents.Open(FileName:=GetStr(j), Visible:=True) Windows(GetStr(j)).Activate Selection。 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 End With Selection.Find.Execute Replace:=wdReplaceAll Application.Run macroname:="NEWMACROS" ActiveDocument.Save ActiveDocument.Close Next Application.ScreenUpdating = 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 宏名:="NEWMACROS" 'ActiveDocument.Save 'ActiveDocument.Close 'Next 'Application.ScreenUpdating = True 'End With 'MsgBox "操作结束,请查看", vbInformation End Sub
皮亚·威尔逊
该评论由网站上的主持人最小化
您好 Pia,我正在尝试运行您的脚本来替换超链接,但出现错误。 您是否有机会在 1 件中发布用于替换超链接的脚本? 尝试将您的代码修补在一起时,我一定搞砸了。
赛格
该评论由网站上的主持人最小化
它仅在选定的文件中运行,并且文件必须仅位于一个文件夹中。 这是在 word doc 中作为宏运行的。 它通过单击按钮运行。 它只更新 word doc 希望这会有所帮助。 Private Sub CommandButton1_Click() Dim MyDialog As FileDialog, GetStr(1 To 100) As String '100 个文件是应用此代码的最大值 On Error Resume Next Set MyDialog = Application.FileDialog(msoFileDialogFilePicker) With MyDialog .Filters.Clear '~~>将此文件扩展名更改为相关的文档类型。 .Filters.Add "All WORD File", "*.doc", 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 For j = 1 To i 步骤 1 设置 doc = Documents.Open(FileName:=GetStr(j), Visible:=True) Windows(GetStr(j)).Activate Selection。 Find.ClearFormatting Selection.Find.Replacement.ClearFormatting For i = 1 To doc.Hyperlinks.Count '如果超链接匹配。 If LCase(doc.Hyperlinks(i).Address) = "http://www.yahoo.co.uk/" Then '更改链接地址。 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制作
该评论由网站上的主持人最小化
Big THX 4 代码......但也有带有标题的prblm......没有变化提前谢谢
WORDZ
该评论由网站上的主持人最小化
感谢您发布此信息! 我已经进行了几次测试并让它为我工作; 但是,由于某种原因,它不适用于页眉和页脚中的文本。 有解决办法吗?
sathena99
该评论由网站上的主持人最小化
很抱歉,但我不知道标题或格式。 这不是我需要包含在我的代码中的东西。 我之前从未使用过它,我发布的代码取自上面的原始代码,然后使用在其他搜索中找到的代码进行 tweeked,直到它起作用。 很抱歉,我无法提供更多帮助。
皮娅
该评论由网站上的主持人最小化
最近几分钟我一直在测试它,这真是一个奇迹,谢谢! 我需要为几个文件执行几个“查找和替换”例程。 几十个文件的几十个例程。 有没有办法“保存”模块,这样我每次需要执行新例程时都不需要在 VBA 屏幕上再次粘贴它?
该评论由网站上的主持人最小化
是否可以调整此宏以一次执行多个“查找和替换”姿势? 我需要替换几个单词和 phareses,到目前为止,我需要为每个实例重新插入 VBA 代码。 我对这些事情是个菜鸟
马里奥
该评论由网站上的主持人最小化
这段代码为我节省了很多时间......所以,谢谢! 不过有一件事 - 有没有办法增加宏找到/替换的单词数量? 我需要一次查找/替换多个段落,宏似乎有大约 200 个字符的限制。
米洛
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0  产品特性
建议地点