从 Excel 列表中“查找和替换”Word 中的多个单词

Posted

技术标签:

【中文标题】从 Excel 列表中“查找和替换”Word 中的多个单词【英文标题】:"Find and Replace" multiple words in Word from Excel list 【发布时间】:2014-06-17 23:35:05 【问题描述】:

我在 MS Word 中创建了一个查找和替换宏,将单词 A 替换为 B。好的,但现在我有 50 个单词需要替换。这意味着我必须为每个单词创建一个新条目,这将永远持续下去。再加上几周后,我将不得不添加更多要替换的单词。

有没有办法通过 excel 链接单词列表,说第 1 列中的单词是我想用第 2 列中的匹配单词替换的单词?

这是我目前所拥有的。

Sub Macro5()
'
' Macro5 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "apples"
        .Replacement.Text = "all the apples"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.Execute
End Sub

【问题讨论】:

psst.... 代码块需要缩进 4 个空格才能显示出来。 @Birk 如果您愿意,请给我发送电子邮件:dzemens [at] gmail.com 【参考方案1】:
    修改您的宏,使其可以accept parameters 用于“word 查找”和“要替换的单词”。 Loop through a range 在 Excel 中, 通过value of each cell 到您修改后的宏(子程序)。

【讨论】:

【参考方案2】:

这样的事情应该可以帮助您入门。将 Excel 绑定到 Word,打开包含列表的文件,然后遍历列表,依次调用您的宏(修改为接受两个字符串参数,findTextreplaceText)。

Sub Main()
Dim xl as Object 'Excel.Application
Dim wb as Object 'Excel.Workbook
Dim ws as Object 'Excel.Worksheet
Dim rng as Object 'Excel.Range
Dim cl as Object  'Excel.Range
Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open("c:\folder\file.xlsx") '## Modify as needed
Set ws = wb.Sheets(1) '##Modify as needed
Set rng = ws.Range("A1", ws.Range("A1").End(xlDown))
For each cl in rng
    Call Macro5(cl.Value, cl.offset(0,1).Value)
Next
End Sub

您需要自己确认Macro5 的内容在上述循环中按预期工作。

Sub Macro5(findText$, replaceText$)
'
' Macro5 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = findText
        .Replacement.Text = replaceText
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.Execute
End Sub

【讨论】:

以上是关于从 Excel 列表中“查找和替换”Word 中的多个单词的主要内容,如果未能解决你的问题,请参考以下文章

VBA Word 从 Excel 中查找和替换 /&-

基于Excel中数据库的VBA在word中查找和替换

使用 Excel VBA 宏在 Word 中查找和替换页脚文本

Office WORD EXCEL批量查找和替换技巧实例

Word中使用正则表达式进行查找和替换与难题征解

从 Excel 工作表中查找并替换所有文本文件中的字符串