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

我在MS Word中创build了一个查找并replacemacros,用B代替了A。好的,但现在我有50个需要replace的单词。 这意味着我将不得不为每个单词创build一个新的条目,这将需要永远。 再加上从现在开始的几个星期,我将不得不添加更多的单词来取代。

有没有办法通过Excel链接单词列表,比如说第1列中的单词是我想用第2列中的匹配单词replace的单词?

这是我迄今为止。

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 

  1. 修改你的macros,以便它可以接受 “单词查找”和“replace单词”的参数。
  2. 在excel中循环一个范围 ,将每个单元格的值传递给修改过的macros(子例程)。

像这样的东西应该让你开始。 将Excel绑定到Word,打开包含列表的文件,并遍历列表,调用您的macros(修改为接受两个string参数, 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