这是我的代码,但它不会替换!首先,我将 AnyText 更改为 TEMP,在我循环使用 Array TargetList 的元素替换 TEMP 之后,但不能替换 TEMP。
Sub First()
'
' First Macro
Dim i As Long
i = 0
Dim j As Long
Dim myWord As String
Dim msg As String
myWord = "TEMP"
TargetList = Array("AnyText", "NewWord1", "NewWord2", "NewWord3", "NewWord4")
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.Find
.Text = "AnyText"
.Replacement.Text = myWord
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.Find
Do While .Execute(FindText:=myWord, Forward:=True) _
= True
j = j + 1
Loop
msg = msg & "The string " & myWord & _
" found " & j & " times."
End With
msg = msg & vbCrLf & vbCrLf
MsgBox msg
Next myStoryRange
For Each myStoryRange In ActiveDocument.StoryRanges
With myStoryRange.Find
Do While j > -1
.Text = "TEMP"
.Replacement.Text = TargetList(i)
msg = msg & "The string " & myWord & _
" j = " & j & " i = " & i & TargetList(i) & " times."
msg = msg & vbCrLf & vbCrLf
MsgBox msg
j = j - 1
i = i + 1
If i = 5 Then
i = 0
End If
Loop
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange
End Sub