Mehrere Fundstellen ersetzen

  • Word

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Mehrere Fundstellen ersetzen

    Hallo,

    ich erstelle gerade ein Makro, welches bestimmte Textstellen und Absätze ersetzen bzw. entfernen soll.

    Mein Code hierzu sieht wie folgt aus:

    VB.NET-Quellcode

    1. With ActiveDocument.Range.Find
    2. .Text = "^p" + Chr(9) + "^p" + "^#" + Chr(9) + " "
    3. .Replacement.Text = "^p"
    4. .Execute Replace:=wdReplaceAll
    5. End With
    6. With ActiveDocument.Range.Find
    7. .Text = "^p" + "^#" + Chr(9) + " "
    8. .Replacement.Text = "^p"
    9. .Execute Replace:=wdReplaceAll
    10. End With


    Das zieht sich so weiter für jede mögliche verschiedene Fundstelle. Dadurch wird der Code ewig lang.

    Gibt es eine Möglichkeit das ganze etwas kompakter zu gestalten?


    Vielen Dank im Voraus!
    Du könntest das Ersetzen eine eigene Prozedur auslagern.

    Visual Basic-Quellcode

    1. Sub ReplaceAll(FindString As String, ReplacementString As String)
    2. With ActiveDocument.Range.Find
    3. .Text = FindString
    4. .Replacement.Text = ReplacementString
    5. .Execute Replace:=wdReplaceAll
    6. End With
    7. End Sub
    8. Sub DoIt()
    9. Call ReplaceAll("^p" + Chr(9) + "^p" + "^#" + Chr(9) + " ", "^p")
    10. Call ReplaceAll("^p" + "^#" + Chr(9) + " ", "^p")
    11. End Sub
    Vielen Dank, genau soetwas habe ich gesucht.

    Und wenn ich bestimmte Buchstaben im gesamten Text Fett schreiben möchte, dann müsste ich doch nur
    unter die Zeile mit .Text dann die Zeile
    .Replacement.Font.Bold = True
    einfügen und die Prozedur bspw. mit
    Call ReplaceAll("A", "A")
    aufrufen.

    Sehe ich das richtig so?

    Und dann hätte ich noch eine Frage:
    ^# bedeutet ja, dass irgendeine Ziffer vorliegen muss.
    Gibt es soetwas auch mit großen und kleinen Buchstaben von A bis Z bzw. von a bis z ?

    max1605 schrieb:

    ^# bedeutet ja, dass irgendeine Ziffer vorliegen muss.
    Bist du sicher?
    Ich hätte behauptet, dass dafür #verwendet werden muss (ohne ^).

    max1605 schrieb:

    Gibt es soetwas auch mit großen und kleinen Buchstaben von A bis Z bzw. von a bis z ?
    [a-z] bzw. [A-Z].
    Vielleicht geht auch [a-z,A-Z], aber das musst du selbst testen.

    Die Wildcards sind hier alle beschrieben.

    Ausserdem musst du vermutlich MatchWildcards auf True setzen, um Wildcards verwenden zu können.

    max1605 schrieb:

    Call ReplaceAll("A", "A")
    Call kannst du ggf. weglassen und dafür schreiben ​ReplaceAll "A", "A"

    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --