Wiederholen Microsoft Word VBA, bis keine Suchergebnisse gefunden
Habe ich einen MS-Word-makro, die sucht für bestimmte text (Anzeige von markup-codes), schneidet den text und fügt es in eine neue Fußnote, und dann löscht das markup-codes aus der Fußnote. Jetzt möchte ich das makro wiederholt, bis Sie es nicht mehr findet markup-codes in den text ein.
Hier ist das makro unten
Sub SearchFN()
'find a footnote
Selection.Find.ClearFormatting
With Selection.Find
.Text = "&&FB:*&&FE"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute
'cut the footnote from the text
Selection.Cut
'create a proper Word footnote
With Selection
With .FootnoteOptions
.Location = wdBottomOfPage
.NumberingRule = wdRestartContinuous
.StartingNumber = 1
.NumberStyle = wdNoteNumberStyleArabic
End With
.Footnotes.Add Range:=Selection.Range, Reference:=""
End With
'now paste the text into the footnote
Selection.Paste
'go to the beginning of the newly created footnote
'and find/delete the code for the start of the note (&&FB:)
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "&&FB:"
.Replacement.Text = ""
.Forward = False
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
'do same for ending code (&&FE)
With Selection.Find
.Text = "&&FE"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchKashida = False
.MatchDiacritics = False
.MatchAlefHamza = False
.MatchControl = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchFuzzy = False
.MatchWildcards = True
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
Selection.HomeKey Unit:=wdStory
'now repeat--but how??
End Sub
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gute Frage diese, können Sie eine Schleife durch das gesamte Dokument mithilfe der
Selection.Find.Found
Ergebnis.Was Sie tun ist, starten Sie eine Suche und wenn Sie finden Ergebnis gehen in eine Schleife, die nur während der
Selection.Find.Found
Ergebnis "true" ist. Sobald Sie haben durch diese, sind Sie fertig. Der folgende code sollte den trick tun gut für Sie.Diese kann getan werden, ohne mit
Do while
(viele extra-Zeilen, - und Raum - /Zeit-Verschwendung), Es könnte so einfach sein wie folgt:Der einfachste Weg, dies zu tun ist, um die rekursive Funktion (die Funktion, erinnert sich). Fügen Sie diese Zeile am unteren Rand Ihrer sub-oder function: