Kachel_Werkzeug
oerttel.net

Tuhls’ Tools

Word ist nicht sonder­lich ergo­no­misch und auch seine Funk­tio­nen lassen Wünsche offen.

Das muss nicht so blei­ben; es gibt Metho­den, die Soft­ware an die eige­nen Bedürf­nisse anzu­pas­sen. Eini­ger­ma­ßen simpel mit den Bord­mit­teln, raffi­nier­ter mit Kennt­nis­sen von VBA und XML. Meine Erfah­run­gen habe ich hier zusam­men­ge­schrie­ben, um Ihnen einige Trial&Error-Momente zu ersparen.

Sie können die Einzel­tipps anwen­den und dabei etwas über Word lernen oder sich bequem mit dem AdInn »Tuhls’ Tools« die Arbeit erleichtern.

Tuhls’ Tools als fertige Registerkarte fürs Menüband

Als ferti­ges Autoren-Werk­zeug können Sie das AddIn »Tuhls’ Tools« herun­ter­la­den.
Es enthält zahl­rei­che Werk­zeuge, die die Schreib­ar­beit erleich­tern. Einige der enthal­te­nen Funk­tio­nen sind in den Anlei­tun­gen auf dieser Seite zum Selbst­bau beschrieben.

Wich­ti­ger Hinweis:

Tuhls’ Tools arbei­ten leider nicht mit der 64-bit-Version von Word. 

Klicken Sie auf hier, um das AddIn herun­ter­zu­la­den. Das ZIP-Archiv enthält das AddIn und eine ausführ­li­che Anleitung.

Einige der enthal­te­nen Funktionen:

  • Funk­tio­nen, die Word nicht kennt, zum Beispiel eine frei konfi­gu­rier­bare Anfüh­rungs­zei­chen­au­to­ma­tik für
    „ “ ” 
    » «
  • Apostroph-Kontrolle, weil Micro­soft immer noch nicht kapiert hat, dass Apostroph ’ und schlie­ßen­des einfa­ches Anfüh­rungs­zei­chen ‘ nicht dasselbe sind
  • Verbes­se­run­gen, die Stan­dard­funk­tio­nen von Word leich­ter bedien­bar machen
  • besser zugäng­li­che Funk­tio­nen, die in Word so gut versteckt sind, dass man sie normal nur sehr umständ­lich nach einer Odys­see durch Menü­band und Aufga­ben­be­rei­che erreicht
  • mathe­ma­ti­sche Brüche und typo­gra­phisch korrekte Leer­zei­chen zum leich­ten Einfü­gen, ohne in den Sonder­zei­chen zu suchen
  • Anpas­sung impor­tier­ter Texte, u. a. Entfer­nen leerer Absätze, über­flüs­si­ger Leer­zei­chen etc.
  • einfa­ches Rück­set­zen der neues­ten Tasten­kom­bi­na­ti­ons-Eska­pa­den von Microsoft

In den nach­ste­hen­den »Kartei­kar­ten« finden Sie Infor­ma­tio­nen, die über die »normale« Nutzung von Word hinaus­ge­hen. Gehen Sie dabei bedacht vor und lesen Sie die Anlei­tun­gen sorgfältig.

Makros sind keine Geheim­wis­sen­schaft, gerade in Word nicht.

Die hier veröf­fent­lich­ten (oder aus ande­ren seriö­sen Quel­len stam­men­den) Makros lassen sich ganz einfach in ein Doku­ment oder eine Vorlage übernehmen.

Makro nach Word kopieren

  1. Markie­ren Sie das komplette Makro hier im Brow­ser­fens­ter und brin­gen es mit S+c in die Zwischenablage.
  2. Öffnen Sie die Word-Datei, in der Sie es nutzen möchten.
  3. Öffnen Sie mit A+? oder in der Regis­ter­karte Entwick­ler­tools mit Visual Basic die VBA-Entwicklungsumgebung.
  4. Doppel­kli­cken Sie »This Docu­ment« und fügen Sie im rech­ten Fens­ter den Inhalt der Zwischen­ab­lage mit S+v ein.
Bild_2024-07-10_003150610
Der VBA-Editor

Makro starten

Im Fens­ter der Entwick­lungs­um­ge­bung können Sie ein Makro mit % star­ten oder mit ( schritt­weise ausführen.

Vom Text­fens­ter aus rufen Sie den Makro-Dialog mit A+( oder in der Regis­ter­karte Entwick­ler­tools mit Makros auf, wählen das gewünschte Makro und betä­ti­gen eine der beiden Schalt­flä­chen Ausfüh­ren oder Einzelschritt.

Um Makros einfa­cher zu star­ten, legen Sie sich mit »Menü­band anpas­sen« eigene Schalt­flä­chen oder Tasten­kom­bi­na­tio­nen dafür an: Datei | Optio­nen | Menü­band anpassen

Der Dialog zum Verwal­ten und Star­ten von Makros

Wech­seln Sie in der Auswahl »Befehle auswäh­len« in den Bereich Makros und markie­ren Sie das gewünschte Makro.

Ordnen Sie dem Makro im rech­ten Fens­ter eine Schalt­flä­che zu oder nach Klick auf Tasten­kom­bi­na­tion: Anpas­sen ein Tasta­tur­kür­zel.

Makros der Tasta­tur oder dem Menü­band zuweisen

Word bringt eine eigene Entwick­lungs­um­ge­bung für die haus­ei­gene Program­mier­spra­che »Visual Basic for Appli­ca­ti­ons«, kurz VBA mit. Damit lassen sich immer wieder glei­che Funk­ti­ons­ab­läufe als so genannte »Makros« aufzeich­nen und bei Bedarf per Tasten­kom­bi­na­tion oder Schalt­flä­che abru­fen. Eine Anlei­tung für die Verwen­dung des Makro-Recor­ders und einige Grund­schritte in VBA finden Sie im verlink­ten Tutorial. 

AddIns (auch Add-Ins geschrie­ben) sind Ergän­zungs­pro­gramme, die sich in ein ande­res Programm einklin­ken und damit dort zusätz­li­che Funk­tio­nen bereit­stel­len. Ggf. enthal­ten AddIns auch Ergän­zun­gen des Menü­ban­des und der Tastaturkürzel.

Da AddIns auch Schä­den verur­sa­chen können, bedarf ihre Ausfüh­rung der Geneh­mi­gung durch den Nutzer. Die Behand­lung von AddIns legen Sie in Datei | Optio­nen | Add-Ins und Vertrau­ens­stel­lungs­cen­ter /​Sicher­heits­cen­ter /​Trust Center sowie mit der Regis­ter­karte Entwick­ler­tools fest.

Wich­tig: Sollte eine Sub in einem AddIn dasselbe Label verwen­den wie eine in der Doku­ment­vor­lage gespei­cherte Sub, ist letz­tere vorran­gig und wird beim Aufruf über Tasten­kom­bi­na­tion oder Menü­band anstelle der Sub im AddIn gestartet.

Es gibt zwei Kate­go­rien von AddIns:

Word-AddIns

werden mit Visual Basic for Appli­ca­ti­ons (VBA) program­miert und als Vorla­ge­da­tei (*.dotm) in einem Startup-Ordner gespei­chert. Beim Start von Word werden sie mitgeladen.

Ein globa­ler Startup-Ordner enthält Add-Ins für alle Benutzer:

C:\Program Files (x86)\Microsoft Office\Office##\Startup oder

C:\Programme\Microsoft Office##\root\Office##\Startup oder

C:\Program Files (x86)\Microsoft Office\root\Office##\Startup

## steht für die interne Office-Versionsnummer.

Dane­ben gibt es für jeden Benut­zer einen eige­nen Startup-Ordner:

C:\User\(Benutzername)\AppData\Roaming\Microsoft\Word\Startup

COM-AddIns

sind aufwen­di­ger program­miert und werden mit einer Instal­la­ti­ons­rou­tine instal­liert wie Programme.

AddIn-Sicher­heit: Verwen­den Sie möglichst nur AddIns aus Quel­len, denen Sie vertrauen, indem Sie diese Einstel­lung im Trust Center wählen:

Der mit Datei | Optio­nen | Menü­band anpas­sen zu öffnende Dialog lässt einige persön­li­che Anpas­sun­gen der Regis­ter­kar­ten im Menü­band zu, hat aller­dings eine Menge Einschrän­kun­gen. Die größte ist die Beschrän­kung auf den aktu­el­len Compu­ter. Um ange­passte Einstel­lun­gen »mitzu­neh­men«, ist eine Expor­te­dUI-Datei zu gene­rie­ren und auf ande­ren Compu­tern zu installieren.

Siche­rer geht es mit XML-Program­mie­rung; dazu müssen Sie sich gar nicht groß­ar­tig mit XML ausken­nen. Mit Hilfe spezi­el­ler Editor-Programme, ein paar Listen zum Nach­schla­gen und der verlink­ten Anlei­tung schaf­fen Sie das auch ohne Vorkennt­nisse. So erstellte Menü­band-Anpas­sun­gen sind ideal zum Erstel­len von Grup­pen­vor­la­gen. Ein Beispiel für eine auf diese Weise gestal­tete Regis­ter­karte finden Sie auf der Formularseite.

»Tuhls’ kleine Ribbo­nUI-Fibel« hilft Ihnen, diese Tech­nik kennen­zu­ler­nen. Im Rahmen eines Projekts musste ich mich mit der Ribbon-Program­mie­rung ausein­an­der­set­zen und wühlte mich durch die Einge­weide des Inter­nets. Mein Ergeb­nis: Es ist alles da, aber nur mühsam zu finden und noch mühsa­mer als Einstei­ger zu verste­hen. Darum machte ich mich nach Abschluss des Projekts daran, meine Erkennt­nisse in einstei­ger­ge­rech­ter Weise aufzuschreiben.

Wer zuge­lie­ferte Texte oder Texte aus dem Inter­net weiter­ver­ar­beit kennt das Problem, dass diese diverse Satz­män­gel enthal­ten können: z. B. mehr­fach aufein­an­der­fol­gende Leer­zei­chen, Tabsprünge und Absatz­mar­ken. Diese zu besei­ti­gen, kann mühsam werden, auch wenn man dazu »Suchen und Erset­zen« verwen­det, und die Funk­tion Auto­For­mat ist nicht zu Unrecht in den Tiefen der UI-Anpas­sung versteckt.

Die folgen­den Makros verwen­den auch die Funk­tio­nen von »Suchen und Erset­zen«, nur sind sie bereits so vorbe­rei­tet, dass nicht erst nach der passen­den Steue­rung des Erset­zen-Dialogs gefahn­det werden muss. Instal­lie­ren Sie sie wie oben beschrie­ben.

Allge­meine Routi­nen, auf die die nach­fol­gen­den Makros zugreifen 

Allgemeine Routinen, auf die die nachfolgenden Makros zugreifen

Die Sub ChangeChar und die Funktion KeineSelektion werden von den nachfolgenden Makros benötigt.
Kopieren Sie beide deshalb auf jeden Fall in Ihr VBA-Fenster.

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

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

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

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 umwandeln

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 umwandeln

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

'Dieses Makro entfernt "Hoppeltabsprünge", wenn Standardtabstopps durch benutzerdefinierte ersetzt wurden.

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

Tabellenrand: Text oder Rahmen bündig mit dem Satzspiegel

Seit Word 2013 sind die Tabellenrahmen beim Einfügen typographisch korrekt bündig mit dem Satzspiegel. Das hat allerdings bei ungerahmten Tabellen den Effekt, dass der Text innerhalb der Tabelle eingerückt erscheint. Den Text nun bündig am Satzspiegel auszurichten, ist mit der Maus im Lineal nur fummelig unter Zuhilfenahme der A-Taste möglich oder per Übernahme der Werte aus dem Dialog Zellenrahmen in der Registerkarte Tabellenlayout in den Absatz-Dialog in der Registerkarte Start. Am einfachsten geht das mit einem kleinen Makro, das die Tabellenränder um den Wert der inneren Abstände ausrückt.

Wichtig: Beim Aufruf des Makros muss die Schreibmarke in der zu bearbeitenden Tabelle stehen.

Sub Tabelleninhaltfluchten()
On Error GoTo fehler

With Selection.Tables(1)
   einzuglinks = .LeftPadding * -1
   .Rows.SetLeftIndent LeftIndent:=einzuglinks, RulerStyle:=wdAdjustNone
   letztespalte = .Columns.Count
   breite = .Columns(letztespalte).Width + .RightPadding
   .Columns(letztespalte).SetWidth ColumnWidth:=breite, RulerStyle:=wdAdjustNone
   .Select
   With Selection
       .Borders(wdBorderTop).LineStyle = wdLineStyleNone
       .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
       .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
       .Borders(wdBorderRight).LineStyle = wdLineStyleNone
       .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
       .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
       .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
       .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
   End With
End With
Exit Sub 

fehler: MsgBox ("Fehler aufgetreten." & Chr(13) & "Steht die Schreibmarke in der Tabelle?")
End Sub

Warum speichert Word nicht mit S+U+s?

Nahezu alle Programme verwenden S+U+s für die Funktion Speichern unter, nur Word nicht, hier steht S+U+s für Format übernehmen; Speichern unter ruft man mit ° auf. Das hat historische Gründe. Als mit Word noch tastaturbasiert gearbeitet wurde, gab es keine Mehrfach-Tastenbedienungen außer U für Großbuchstaben. Alle Funktionen wurden auf Einzeltasten oder über das per E einzublendende Menü aufgerufen.

Da die Tastenkombination S+U+s nicht anderweitig in Word belegt ist, hätte Microsoft das längst einmal nachbessern können. Mit der benutzerdefinierten Tastenbelegung kann man es nicht nachrüsten, weil diese Funktion Sperenzchen macht, sobald man eine Belegung mit U einrichten möchte. Ein kleines Makro schafft Abhilfe: 

1. Legen Sie ein leeres Word-Dokument an.

2. Öffnen Sie mit A+? den VBA-Editor.

3. Öffnen Sie links im Projekt-Fenster Projekt (Dokument1) | Microsoft Word Objekte | ThisDocument.
4. Kopieren Sie das nachfolgende Makro via Zwischenablage in das rechte Fenster.

Sub TastenkombiSpeichernUnter()

With Application

   .CustomizationContext = NormalTemplate

   .KeyBindings.Add KeyCode:= BuildKeyCode(wdKeyControl, wdKeyShift, wdKeyS), _

   KeyCategory:=wdKeyCategoryCommand, Command:="FileSaveAs"

   NormalTemplate.Save

End With

End Sub

5. Setzen Sie anschließend die Schreibmarke irgendwo in den Makro-Code und starten Sie das Makro mit %.

Sie müssen dieses Makro nur einmal starten, denn dank der Zeile NormalTemplate.Save wird die Tastenbelegung in der Normal.dotm dauerhaft gespeichert.