我想逐字循环浏览Word文档。我目前正在使用ActiveDocument.Words集合,这看起来非常简单。但是,有一个奇怪的问题是,如果我改变一个单词的内容,内部指针不会移动到下一个单词,而是再次指向刚被修改的同一个单词。在某些情况下,这会造成一种情况,即例程无限期地在单个字循环中陷入困境。
示例代码:
Sub LoopWords()
Dim wd As Range
i = 0
For Each wd In ActiveDocument.Words
If wd.Text = "foo " Then
wd.Text = wd.Text & "bar "
End If
'Prevent infinite loop:
i = i + 1
If i > 99 Then
Exit For
End If
Next wd
End Sub
例如,在包含短语“这里有一些foo”的文档中使用此宏。结果“有一些foo bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar ...”等等。
那么为什么它的行为会像这样呢? 如何逐字循环并在必要时修改文本?
答案 0 :(得分:0)
你的宏正在取代" foo"用" foo bar"并使其阅读" foo"作为一个新词一遍又一遍。
而不是:
wd.Text = wd.Text & "bar "
尝试:
wd.InsertAfter "bar "