Word VBA For Each word replacement

时间:2014-03-13 22:49:48

标签: ms-word word-vba

我正在尝试查找以相同字符开头和结尾的所有单词,然后更改它们。现在我想让他们都说“foo”。

For Each w In ActiveDocument.Words
    Dim startChar As String
    startChar = Left(w, 1)
    Dim endChar As String
    endChar = Right(w, 1)
    If UCase(startChar) = UCase(endChar) Then
        w = "foo"
    End If
Next w

如果我Debug.Print w,我会得到正确的结果,但只有在该范围内 - 我如何才能让文档中的单词真正改变?

1 个答案:

答案 0 :(得分:0)

w是一个Word范围(理想情况下应该声明为这样),虽然你可以使用“w”来获取它的内容,因为.Text是Range对象的“默认成员”,要设置它,你需要一些东西像

w.Text = "foo"

(当你进一步探索时,你可能会看到的其他观点:Word的“结束”在某些情况下将是Word之后的空格,并且Word集合会随着文本的变化而动态地改变 - 在某些情况下它可能会从集合末尾开始替换你的单词是有意义的......

For i = ActiveDocument.Words.Count to 1 Step -1
' do your thing...
Next