VBA – Word: Tabulator statt Leerzeichen vor Fußnotentext

Beschreibung

Es ist schon extrem ärgerlich, dass Word nicht die Möglichkeit bietet, dass Trennzeichen zwischen dem Fußnotenzeichen und dem Fußnotentext einzustellen. Mit dem standardmäßig verwendeten Leerzeichen lassen sich Fußnoten – vor allem, wenn sie über mehrere Zeilen gehen – schließlich nicht vernünftig formatieren. Da mir bisher keine automatische Lösung untergekommen ist, statt des Leerzeichens ein Tabulatorzeichen einzusetzen, habe ich mir das unten stehende VBA-Makro für Word gebastelt.

Das Makro durchläuft alle Fußnoten des aktiven Dokuments und ersetzt das erwähnte Leerzeichen durch ein Tabulatorzeichen. Damit bei erneutem Ausführen des Makros nichts kaputt gemacht wird, wird zudem kontrolliert, ob nicht bereits ein Tabulatorzeichen verwendet wird.

Der eingestellte hängende Einzug von 0,35cm sorgt dafür, dass der Text ab der zweiten Zeile vernünftig eingerückt wird. Der Wert für den Einzug kann über die Konstante am Anfang der Funktion angepasst werden:

Const EINZUG As Single = 0.35

Beim Anpassen des Wertes muss beachtet werden, dass statt des in Deutschland üblichen Kommas ein Punkt verwendet wird.

Auf Fehlerbehandlungsroutinen habe ich bei diesem Makro größtenteils verzichtet, evtl. liefere ich das später noch nach.

Sourcecode

Sub addTabBeforeFootnotetext()
    If Len(ActiveDocument.Name) <> 0 Then
        ' Einzug auf 0,35cm setzen
        Const EINZUG As Single = 0.35

        Dim fnFussnote As Footnote
        Dim sLinkerEinzug As Single

        ' Wert des Einzugs in Punkte umwandeln
        sLinkerEinzug = CentimetersToPoints(EINZUG)

        ' Bildschirmaktualisierung abschalten
        Application.ScreenUpdating = False

        ' alle Fußnoten im aktiven Dokument anpassen
        For Each fnFussnote In ActiveDocument.Footnotes
            fnFussnote.Range.Select     ' Fußnote selektieren

            ' Gegebenenfalls vorhandenen Tabulator am Anfang löschen um zwei aufeinander folgende Tabulatorzeichen zu verhindern
            If StrComp(Selection.Characters(1), vbTab) = 0 Then
                Selection.MoveLeft          ' An den Anfang der Fußnote gehen
                Call Selection.MoveRight(Unit:=wdCharacter, Count:=1, Extend:=wdExtend) ' Tab markieren
                Selection.Delete
            Else
                Selection.MoveLeft          ' An den Anfang der Fußnote gehen
            End If

            Call Selection.MoveLeft(Unit:=wdCharacter, Count:=1, Extend:=wdExtend) ' Zeichen vor dem Fußnotentext markieren

            ' Prüfen, ob das markierte Zeichen ein Leerzeichen ist
            If StrComp(Selection.Characters(1), " ") = 0 Then
                Selection.TypeBackspace
            End If

            ' Tab nach Fußnotenzeichen einfügen
            fnFussnote.Range.InsertBefore (vbTab)
        Next

        With ActiveDocument.Styles(wdStyleFootnoteText).ParagraphFormat
            .TabStops.ClearAll                              ' alle vorhandenen Tabs in Fußnoten löschen
            Call .TabStops.Add(Position:=sLinkerEinzug)     ' Tab setzen
            .LeftIndent = sLinkerEinzug                     ' Einzug für alle Zeilen setzen
            .FirstLineIndent = sLinkerEinzug * -1           ' erste Zeile ohne Einzug
        End With

        ' Bildschirmaktualisierung einschalten
        Application.ScreenUpdating = True
    End If
End Sub

Ein Gedanke zu „VBA – Word: Tabulator statt Leerzeichen vor Fußnotentext“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.