Comment puis-je modifier ce code pour ne trouver que des mots entiers? Actuellement, il recherche n'importe quelle instance du mot. En outre, comment supprimer le message ou le laisser sélectionner automatiquement "Oui". C'est une macro que j'essaie de faire fonctionner dans Microsoft Word en fonction de Rechercher et remplacer.
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
microsoft-word
vba
search
find
Tyler
la source
la source
Réponses:
En guise de réponse rapide, vous pouvez supprimer la boîte de message en supprimant (ou en commentant) la ligne.
et ensuite changer
dans
Mais une meilleure façon de regarder de plus près comment vous utilisez
.find
. Il y a une.replacement.text
propriété sous .find, que vous pouvez utiliserReplace:=wdReplaceAll
lors de l'exécution. En mémoire, l’option "Remplacer tout" signifie que vous n’avez pas à avoir le.find.execute
dans une boucle.Je n'ai pas examiné de près le reste de votre code (par exemple, je ne
While x=True
peux que l'êtreWhile x
), mais je ne vois rien d'évident qui réponde à votre question initiale de ne pas sélectionner le mot entier (vous l'avez déjàMatchWholeWord
défini).la source