VBA 宏 - 有没有办法只查找整个单词?

VBA 宏 - 有没有办法只查找整个单词?

我如何修改此代码以仅查找整个单词?目前,它会搜索单词的任何实例。此外,如何隐藏消息框或让其自动选择“是”。这是我尝试在基于“查找和替换”的 Microsoft Word 中运行的宏。

Sub ReplaceFromTableList()
Dim oChanges As Document, oDoc As Document
Dim oTable As Table
Dim oRng As Range
Dim rFindText As Range, rReplacement As Range
Dim i As Long
Dim sFname As String
Dim sAsk As String
    sFname = "C:\Users\tmoore\Desktop\Changes_Comps.docx"
    Set oDoc = ActiveDocument
    Set oChanges = Documents.Open(FileName:=sFname, Visible:=False)
    Set oTable = oChanges.Tables(1)
    For i = 1 To oTable.Rows.Count
    Set oRng = oDoc.Range
    Set rFindText = oTable.Cell(i, 1).Range
    rFindText.End = rFindText.End - 1
    Set rReplacement = oTable.Cell(i, 2).Range
    rReplacement.End = rReplacement.End - 1
    With oRng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        Do While .Execute(findText:=rFindText, _
                          MatchWholeWord:=True, _
                          MatchWildcards:=False, _
                          Forward:=True, _
                          Wrap:=wdFindStop) = True
            oRng.Select
            sAsk = MsgBox("Replace - " & vbCr & oRng & vbCr + vbCr & _
                          "with - " & vbCr & rReplacement, vbYesNo, _
                          "Replace from Table")

            If sAsk = vbYes Then
                oRng.FormattedText = rReplacement.FormattedText
            End If
            oRng.Collapse wdCollapseEnd
        Loop
    End With
  Next i
  oChanges.Close wdDoNotSaveChanges
End Sub

答案1

作为一个快速答案,您可以通过删除(或注释掉)以下行来隐藏消息框

sAsk = MsgBox("Replace - " & vbCr & oRng & vbCr + vbCr & _
                      "with - " & vbCr & rReplacement, vbYesNo, _
                      "Replace from Table")

然后改变

If sAsk = vbYes Then
            oRng.FormattedText = rReplacement.FormattedText
        End If

进入

oRng.FormattedText = rReplacement.FormattedText

但更好的方法是仔细观察您如何使用.find。.find 下有一个.replacement.text属性,您可以Replace:=wdReplaceAll在执行时使用它。从内存中,使用“全部替换”选项意味着您不必.find.execute在循环中使用。

我还没有仔细看过你的其余代码(例如,While x=True可以只是While x),但我看不到任何明显的东西可以解决你关于不选择整个单词(你已经MatchWholeWord设置了)的初始问题。

相关内容