我在 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
这样的事情应该可以帮助你开始。将 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
我在这行遇到错误“应用程序定义或对象定义错误” 设置 rng = ws.range("A1", ws.range("A1").End(xlDown)) 请问如何解决?