Ihre Browserversion ist veraltet. Wir empfehlen, Ihren Browser auf die neueste Version zu aktualisieren.

oerttel.net

Hoppelformatierung bereinigen

Veröffentlicht am 22.10.2019

Wer zugelieferte Texte oder Texte aus dem Internet weiterverarbeit kennt das Problem, dass diese diverse Satzmängel enthalten können: z. B. Mehrfach-Leerzeichen, -Tabsprünge und -Absatzmarken. Diese zu beseitigen, kann mühsam werden, auch wenn man dazu »Suchen und Ersetzen« verwendet, und die Funktion AutoFormat ist nicht zu Unrecht in den Tiefen der UI-Anpassung versteckt.

Die folgenden Makros verwenden auch die Funktionen von »Suchen und Ersetzen«, nur sind sie bereits so vorbereitet, dass nicht erst nach der passenden Steuerung des Ersetzen-Dialogs gefahndet werden muss.

Wichtig sind zunächst einige Hilfsroutinen, auf die alle Makros zugreifen und die unbedingt mitkopiert werden müssen.

Die Ersetzen-Funktion, die von anderen Makros aufgerufen wird:

Sub ChangeChar(SuchZeichen, ErsatzZeichen, FontSuch, BooleFormat, BooleWildCard)

Dim Steuerz, Feld As Boolean

Feld = ActiveWindow.View.ShowFieldCodes

ActiveWindow.View.ShowFieldCodes = False  

Steuerz = ActiveWindow.ActivePane.View.ShowAll

ActiveWindow.ActivePane.View.ShowAll = False

       

With Selection.Find

    .ClearFormatting

    .Replacement.ClearFormatting

    .Text = SuchZeichen

    .Font.Name = FontSuch

    .Font.Hidden = False

    .Replacement.Text = ErsatzZeichen

    .Forward = True

    .Wrap = wdFindStop

    .Format = BooleFormat

    .MatchCase = False

    .MatchWholeWord = False

    .MatchWildcards = BooleWildCard

    .MatchSoundsLike = False

    .MatchAllWordForms = False

    .Execute Replace:=wdReplaceAll

End With

         

ActiveWindow.ActivePane.View.ShowAll = Steuerz

ActiveWindow.View.ShowFieldCodes = Feld

 End Sub

Wenn die Makros ohne Markierung aufgerufen werden, kommt eine Sicherheitsabfrage:

Function KeineSelection()

KeineSelection = 0

ksPrompt = "Diese Funktion sollte sicherheitshalber nur innerhalb eines markierten Textteils vorgenommen werden. Trotzdem ausführen?"

ksTitle = "Kein Text markiert"

KeineSelection = MsgBox(ksPrompt, vbYesNo, ksTitle)

End Function


Nun die eigentlichen Austauschmakros:

Mehrfach-Leerzeichen auf eines reduzieren

Sub MehrfachBlanksRaus()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then Call ChangeChar(" {2;}", " ", "", False, True)

End Sub


Für Einrückungen missbrauchte führende Leerzeichen entfernen

Sub FuehrendeBlanksRaus()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then

    Call ChangeChar(" {2;}", " ", "", False, True)

    Call ChangeChar("^p ", "^p", "", False, False)

End If

End Sub


Für Einrückungen missbrauchte führende Leerzeichen in Tabsprünge umwandeln

Die Anzahl der Leerzeichen pro Tabsprung können Sie in einer Abfrage bestimmen.

Sub FuehrendeBlanksZuTabs()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then

    bPrompt = "Wieviele Leerzeichen sollen zu je einem Tabsprung zusammengefasst werden?"

    bTitle = "Leerzeichenanzahl"

    bDefault = "4"

    Anzahl = InputBox(bPrompt, bTitle, bDefault)

    Call ChangeChar(" {" & Anzahl & "}", "^t", "", False, True)

    Call ChangeChar(" {2;}", " ", "", False, True)

    Call ChangeChar("^p ", "^p", "", False, False)

End If

End Sub


Mehrfach-Absatzmarken auf eine reduzieren

Sub AbsatzmarkenRaus()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then

    Call ChangeChar("^13{2;}", "^13", "", False, True)

    Call ChangeChar("^p ", "^p", "", False, False)

End If

End Sub


Absatzmarken durch Leerzeichen ersetzen (Fließtext wiederherstellen)

Sub AbsatzmarkenZuFliesstext()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then

    Call ChangeChar("^13{2;}", "äöüß", "", False, True)

    Call ChangeChar("^13", " ", "", False, False)

    Call ChangeChar("äöüß", "^13", "", False, False)

    Call ChangeChar(" {2;}", " ", "", False, True)

End If

End Sub


Manuelle Zeilenschaltungen durch Absatzmarken ersetzen

Sub ZeilenschaltungZuAbsatz()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then Call ChangeChar("^l", "^13", "", False, False)

End Sub


Manuelle Zeilenschaltungen durch Leerschritte ersetzen 

Sub ZeilenendenZuFliesstext()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then

    Call ChangeChar("^l", " ", "", False, False)

    Call ChangeChar(" {2;}", " ", "", False, True)

    If Left(Selection, 1) = " " Then Selection.Delete Unit:=wdCharacter, Count:=1

End If

End Sub


Mehrfach-Tabsprünge auf einen reduzieren (wenn Standardtabstopps durch benutzerdefinierte ersetzt werden)

Sub TabsRaus()

MirDochEgal = vbYes

If (Selection.Start = Selection.End) Then MirDochEgal = KeineSelection

If MirDochEgal = vbYes Then Call ChangeChar("^t{2;}", "^t", "", False, True)

End Sub

Cookie-Regelung

Diese Website verwendet Cookies, zum Speichern von Informationen auf Ihrem Computer.

Stimmen Sie dem zu?