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

问题描述 投票:0回答:3

我在 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
vba excel replace ms-word
3个回答
3
投票

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

findText
replaceText
)。

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

2
投票
  1. 修改你的宏,以便它可以接受 “单词”的参数 查找”和“要替换的单词”。
  2. 循环遍历 Excel 中的范围, 传递每个的 值 细胞 到您修改后的宏(子程序)。

0
投票

我在这行遇到错误“应用程序定义或对象定义错误” 设置 rng = ws.range("A1", ws.range("A1").End(xlDown)) 请问如何解决?

© www.soinside.com 2019 - 2024. All rights reserved.