Benutzer-Werkzeuge

Webseiten-Werkzeuge


office:word

Inhaltsverzeichnis

Word

Dies ist die Word-Hilfe

Add-Ins

sinnvolle Add-Ins finden sich bei:

http://www.add-in-world.com

weitere bei:

https://wordaddins.com/

Letzere stehen in Zusammenhang mit den Arbeiten von Shauna Kelly.

E-Books mit Word

siehe E-Books

Gründe für Abstürze/Nichtfunktionieren von Befehlen

  1. Normal.dotm kann defekt sein. Lösung: Normal.dotm umbenennen; beim nächsten Starten von Word legt das Programm eine jungfräuliche Normal.dotm an.
  2. Defekte oder fehlerhafte Com-AddIns. Lösung: Com-AddIns der Reihe nach ausschalten (Menü [Entwicklertools - Com-AddIns - Häkchen wegnehmen]) und beobachten, was sich tut.
  3. Defekte oder fehlerhafte übliche Add-Ins (bei Dokumentvorlagen und AddIns); so kann es passieren, dass z. B. Strg-v nicht mehr funktioniert; Grund kann z. B. eine veraltete Version von MathType sein; Lösung: Häkchen bei AddIn wegnehmen
  4. Unsauberkeiten im Dokument, die nicht identifiziert werden können. Lösungen: a) Abspeichern im RTF-Format, diese Datei gleich wieder im docx-Format speichern. b) Gesamten Inhalt markieren, aber die letzte Absatzmarke nicht mitnehmen; dann kopieren und in neue Word-Datei einfügen; diese dann wie üblich als docx-Datei speichern.

Sicherheitswarnungen, deren Ursache nicht gefunden werden können

Gründe können sein:

  • korrupte Normal.dotm; Lösung: aktuelle Normal.dotm umbenennen; Word legt dann beim nächsten Start von Word eine neue, jungfräuliche Normal.dotm an.
  • COM-Add-Ins (wie Acrobat PDFMaker) laufen nicht richtig; Lösung: Add-Ins bewusst ein- oder ausschalten.

Word 2010/2013/2016

  • die Entwicklertools (also z.B. Dokuvorlage) sind jetzt nur noch unter <Optionen - Menüband anpassen> einschaltbar: bei den Hauptregisterkarten das Häkchen bei „Entwicklertools“ setzen

Umgang mit benutzerdefinierten Symbolleisten, Formatvorlagen und Makros

  • wie in OpenOffice (und anscheinend in allen XML-basierten Programmen) können Formatvorlagen nicht direkt in Menüs/Symbolleisten/Registerkarten platziert werden, sondern nur indirekt über Makros.
  • eine Möglichkeit, mit benutzerdefinierten Formatvorlagen zu arbeiten, besteht darin, sie in Word 2003 anzulegen und als Dokuvorlage abzuspeichern; dann diese Dokuvorlage mit dem aktuellen 2010/2013-Dokument verbinden; daraufhin erscheint in Word 2010 eine neue Registerkarte „Add-Ins“, in der eine „Gruppe“ namens „Benutzerdefinierte Symbolleisten“ enthalten ist. Das war in Word 2007 auch schon so. Neu ist nun, dass man diese Registerkarte auch auf die Symboleiste für den Schnellzugriff legen kann, was nichts anderes heißt, als dass sie jederzeit aufgerufen („aufgeklappt“) werden kann, ohne dass oben ein anders Menüband gewählt werden muss; sie ist also ähnlich wie in Word 2003 separat verwendbar, obwohl sie nicht ständig geöffnet bleiben und nicht verschoben werden kann. Diese Möglichkeit ist daher nur ein Notbehelf.
  • zweite Möglichkeit: für jede Formatvorlage ein gleichlautendes Makro erstellen (aufzeichnen), das nichts anderes macht, als dem Text die Formatvorlage zuzuweisen. Dieses Makro kann dann der Symbolleiste für den Schnellzugriff oder aber einer (benutzerdefinierten) Registerkarte hinzugefügt werden. Letzteres ist das Verfahren der Wahl.
  • Beim Hinzufügen zu einer Registerkarte wird die Übersicht verbessert, wenn für die Bereiche Absatz, Zeichen, Einfügen, Seite je eine separate Gruppe angelegt wird. Die Gruppe Absatz trägt dann z.B. die Makros „A:Fließ“ (für Fließtext zuweisen), „A:Fließ nach Ü“ (für Fließtext nach Überschrift zuweisen), die Gruppe Zeichen z.B. „hoch_kursiv“ (für gleichzeitiges Hochstellen und Kursivieren) usw.
  • Die Makros sind wie bei früheren Wordversionen einer Dokuvorlage zugeordnet. D.h., nur wenn ein Dokument mit der jeweiligen Dokuvorlage verbunden ist, wirken dies Makros.
  • Dasselbe gilt für die Formatvorlagen.
  • Neu und sehr gut in Word 2010/2013: Alle benutzerdefinierten Anpassungen von Menüband oder Schnellzugriffs-Symbolleiste können exportiert und entsprechend auch importiert werden. Beim Exportieren entsteht eine Datei mit der Endung .exportedUI, die man an einem Ort der Wahl abspeichern kann. Von hier lässt sie sich auch wieder importieren. Es empfiehlt sich, den exportedUI-Dateien selbsterklärende Namen zu geben. Im Dateinamen sollte immer der Name der zugehörigen Dokuvorlage enthalten sein, damit man gleich weiß, mit welcher Dokuvorlage das Dokument, in dem man die benutzerdefinierten Anpassungen verwenden möchte, verbunden werden muss. Auf der Basis ein und derselben Dokuvorlage können mehrere unterschiedliche exportedUI-Dateien angelegt werden, und bei Bedarf lässt sich dann die eine oder andere importieren!
  • Wichtig: In einer exportedUI-Datei sind neben den Menübandanpassungen auch die Anpassungen der Schnellzugriffs-Symbolleiste enthalten. Das ist deshalb hervorhebenswert, weil man sich eine Standardbelegung der Schnellzugriffs-Symbolleiste erzeugen sollte (bei der Standardbelegung ist darauf zu achten, dass nur Befehle auf der Schnellzugriffs-Symbolleiste abgelegt werden, die zum Standard-Repertoire von Word gehören), die man dann von einer Dokuvorlage an eine andere übergeben kann. Ist mit einer neuen Dokuvorlage noch keine exportedUI-Datei verbunden, so lädt man einfach die exportedUI-Datei einer anderen Dokuvorlage. Die darin enthaltene Standard-Anpassung der Schnellzugriffs-Symbolleiste kann dann sofort verwendet werden!


Typische Anpassungen von Menüband und Schnellzugriffs-Symbolleiste

  • Nach dem Import der exportedUI-Datei ist lediglich das Menüband an die neue Dokuvorlage anzupassen. Dazu sollten zunächst sämtliche alten Befehle (also Makros) aus den Gruppen „Absatz“, „Zeichen“ usw. entfernt werden. Anschließend können die neuen Makros den Gruppen zugewiesen werden. Danach sollten die Anpassungen unter einem neuen Namen exportiert werden.

.exportedUI-Datei

Geeignete Editor-Programme

Die .exportedUI-Datei kann mit jedem ASCII-Editor geöffnet werden. Allerdings sollte ein Editor den Vorzug erhalten, mit dem die Syntax hervorgehoben werden kann.

Ein sehr gut geeigneter Editor ist Notepad++. Zur geordneten Darstellung des Codes am besten XML als Sprache für die Syntaxhervorhebung wählen. Nun erscheinen Elementnamen, Attribute und Attributwerte in unterschiedlichen Farben. Beim Hineinklicken in ein Element werden Anfang und Ende des Elements hervorgehoben.

Bearbeiten der exportedUI-Datei

Bevor man die exportedUI-Datei inhaltlich bearbeitet, sollte sie formal aufbereitet werden und zwar mit dem Ziel, dass jedes Element in einer separaten Zeile steht.

  • Im Ersetzen-Fenster von Notepad++ mit regulären Ausdrücken arbeiten: \n steht für neue Zeile; nun alle „><“ zu ersetzen durch „>\n<“ , also nach allen schließenden spitzen Klammern eine neue Zeile einzufügen.
Ausschnitt aus typischer exportedUi-Datei, wie sie sich in Notepad zeigt

Diese Datei kann nun inhaltlich verändert und anschließend wieder abgespeichert werden.

Grundsätzlich ist es möglich, im Editor z.B.

  • alle Umbenennungen von Registerkartennamen und Gruppennamen vorzunehmen und
  • Elemente aus einer anderen exportedUI-Datei zu übernehmen

Nach dem Speichern kann die geänderte Datei erneut in Word (per Menüband anpassen) importiert werden und alle Änderungen sind zu sehen.

Beispiele für Elemente:

  • <mso:qat> … </mso:qat>: Eltern-Element, das die Tochter-Elemente (Funktionsbuttons) für die Schnellzugriffsleiste umfasst
  • <mso:tabs> … </mso:tabs>: Eltern-Element, das die Tochter-Elemente (Registerkarten, Gruppen, Funktionsbuttons) für das Menüband umfasst
  • <mso:tab …> … </mso:tab>: Registerkarte (Tochterelement zu <mso:tabs> … </mso:tabs>, auch Eltern-Element für Gruppen und Funktionsbuttons)
  • <mso:group …> … </mso:group>: Gruppe (Tochterelement zu <mso:tab> … </mso:tab>, auch Eltern-Element für Funktionsbuttons)
  • <mso:separator idQ=„msox:sep2“ visible=„true“/>: bezeichnet die zweite Separationslinie (separator idQ=„msox:sep2“) auf der Schnellzugriffsleiste
  • <mso:control idQ=„mso:StyleGalleryClassic“ visible=„true“/>: Funktions-Button, der sowohl auf der Schnellzugriffsleiste als auch im Menüband liegen kann; hier: die Funktion zum Einblenden der „klassischen“ Formatvorlagen„
  • <mso:button idQ=„x2:makro1_0_147E3F2D“ label=„Testmakro“ imageMso=„AppointmentColor3“ onAction=„markierung_als_ut“ visible=„true“/>: Makro-Button mit dem Namen „Testmakro“; ablaufen wird das Makro, das unter dem Namen „makro1“ im Makromodul der Dokumentvorlage enthalten ist.


Besonders gut: Mehrere exportedUI-Dateien können zusammengeführt werden! Z.B. kann man den Code, der zu einer Registerkarte gehört (beginnt mit <mso:tab …> und endet mit </mso:tab>), in der einen exportedUI-Datei kopieren und in einer anderen einfügen. Am besten danach unter neuem Namen abspeichern. Importiert man anschließend diese neue exportedUi-Datei in Word, so steht die Registerkarte zur Verfügung.

Es ist klar, dass alle Eingriffe nur sehr moderat vorgenommen werden sollten, damit die von Word erwartete Syntax nicht zerstört wird.

Achtung: Makros werden von Schnellzugriffsleiste oder Menüband aus ausschließlich über den eigentlichen Makronamen aufgerufen (im vorstehenden Beispiel „makro1“). D.h., sie müssen in eindeutiger Weise zur Verfügung stehen. Läuft ein Makro nicht oder falsch, so hat das mindestens einen der folgenden Gründe:

  • Dokumentvorlage mit dem gewünschten Makro ist nicht mit dem Dokument verbunden. Lösung: per Anfügen oder Hinzufügen verbinden.
  • Makro existiert mit dem selben Namen in mehreren gerade geöffneten Dateien oder in mehreren mit dem Dokument verbundenen Dokumentvorlagen (z.B. auch in der Normal.dotm), und zwar mit unterschiedlichen Codes. Lösung: Makro in den anderen Dateien löschen oder umbenennen, sodass ausschließlich das Makro aus der „richtigen“ Dokumentvorlage wirken kann.
  • es fehlt die Formatvorlage, auf die das Makro zugreifen will. Lösung: Sobald bei Makros Formatvorlagen ins Spiel kommen, müssen diese im Dokument vorhanden sein, d.h., man muss entweder die Dokumentvorlage (die die Formatvorlagen enthält) per Anfügen mit dem Dokument verbinden und das Häkchen bei „Dokumentformatvorlagen automatisch aktualisieren“ setzen oder die Dokumentvorlage per Hinzufügen verbinden und im Organisieren-Fenster die benötigten Formatvorlagen in das Dokument kopieren.


Die Tatsache, dass Makros ausschließlich über den eigentlichen Makronamen aufgerufen werden, bedeutet umgekehrt: 
im Code einer exportedUI-Datei ist nicht mehr als der Makroname nötig, um eine Verbindung zwischen Menüband/Schnellzugriffsleiste
und Makro herzustellen!


Man kann also jedes beliebige Makro jederzeit mit Menüband/Schnellzugriffsleiste verknüpfen; man muss lediglich dafür sorgen, dass der Makroname im Code der exportedUI-Datei (genauer: im Code eines Makro-Buttons) steht und das Makro in der angefügten oder hinzugefügten Dokuvorlage enthalten ist.

Allerdings scheint es nicht möglich zu sein, einfach den Code eines einzelnen Makro-Buttons in der einen exportedUI-Datei zu kopieren und an beliebiger Stelle in einer anderen exportedUI-datei einzufügen. Jeder Button ist Teil einer Gruppe und diese wieder Teil einer Registerkarte. Der Code ganzer Registerkarten kann von einer exportedUI-Datei zu einer anderen übertragen werden, aber bei Gruppen und Buttons scheinen die internen Ids eine große Rolle zu spielen.

Nach dem Import in Word kann aber jede Registerkarte oder Gruppe mit den Word-eigenen Mitteln (Menüband anpassen) nachbearbeitet werden. Das heißt, überflüssige Buttons können einfach entfernt werden.

RibbonXML-Programmierung

Neben der Verwendung von .exportedUI-Dateien gibt es die Möglichkeit, Anpassungen von Menüband und Schnellzugriffsleiste direkt in einem Dokument oder einer Dokumentvorlage abzuspeichern. Insbesondere das Abspeichern in einer Dokumentvorlage hat den Vorteil, dass eine Anpassung sofort zur Verfügung steht, wenn ein Dokument mit der Dokumentvorlage per Anfügen oder Hinzufügen verbunden wird. Das heißt, neben einer Dokumentvorlage ist keine andere Datei mehr nötig, um mit Menübandanpassungen arbeiten zu können.

Nachteil dieses Verfahrens: Man muss tief in XML und VBA einsteigen. Man spricht auch von RibbonXML-Programmierung. Während die Erzeugung und die Verwaltung von .exportedUI-Dateien von fortgeschrittenen Word-Usern vorgenommen werden kann, ist die RibbonXML-Programmierung sehr fortgeschrittenen Word-Usern und Programmierern vorbehalten.

Unter https://docs.microsoft.com/de-de/office/vba/library-reference/concepts/customize-the-office-fluent-ribbon-by-using-an-open-xml-formats-file [aufgerufen am 26.12.2021] findet man eine brauchbare Anleitung zur Menübandanpassung auf Basis von XML:

>>

Anpassen des Office Fluent-Menübands mithilfe einer Open XML-Format-Datei

Die Menübandkomponente der Microsoft Office Fluent-Benutzeroberfläche verleiht Benutzern eine flexible Möglichkeit zum Arbeiten mit Office-Anwendungen. RibbonX verwendet einfaches, textbasiertes, deklaratives XML-Markup, um das Menüband zu erstellen und anzupassen. Das Codebeispiel in diesem Thema zeigt, wie Sie dem Menüband für ein einzelnes Dokument benutzerdefinierte Komponenten hinzufügen, anstatt Anpassungen auf Anwendungsebene hinzuzufügen. In den folgenden Schritten fügen Sie dem vorhandenen Menüband in Word eine benutzerdefinierte Registerkarte, eine benutzerdefinierte Gruppe und eine benutzerdefinierte Schaltfläche hinzu. Außerdem wird eine Rückrufprozedur definiert, die einen Firmennamen in das Dokument einfügt.

1. Erstellen Sie die Anpassungsdatei in einem beliebigen Text-Editor, und speichern Sie die Datei mit dem Namen customUI.xml.
2. Fügen Sie der Datei das folgende XML-Markup hinzu, und schließen und speichern Sie die Datei dann.

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"> 
 <ribbon> 
   <tabs> 
     <tab id="CustomTab" label="My Tab"> 
       <group id="SampleGroup" label="Sample Group"> 
         <button id="Button" label="Insert Company Name" size="large" onAction="ThisDocument.InsertCompanyName" /> 
       </group > 
     </tab> 
   </tabs> 
 </ribbon> 
</customUI> 

3. Erstellen Sie auf dem Desktop einen Ordner mit dem Namen customUI, und kopieren Sie die XML-Anpassungsdatei in den Ordner.
4. Überprüfen Sie das XML-Markup mit einem benutzerdefinierten Schema. (Hinweis: Dieser Schritt ist optional.)
5. Erstellen Sie ein Dokument in Word, und speichern Sie es mit dem Namen RibbonSample.docm.
6. Öffnen Sie den Visual Basic-Editor, und fügen Sie dem Codemodul „ThisDocument“ die folgende Prozedur hinzu. Schließen und speichern Sie das Dokument.

Sub InsertCompanyName(ByVal control As IRibbonControl) 
' Inserts the specified text at the beginning of a range or selection. 
Dim MyText As String 
Dim MyRange As Object 
Set MyRange = ActiveDocument.Range 
MyText = "Microsoft Corporation" 
' Range Example: Inserts text at the beginning 
' of the active document 
MyRange.InsertBefore (MyText) 
' Selection Example: 
'Selection.InsertBefore (MyText) 
End Sub 

7. Fügen Sie dem Dateinamen die Erweiterung ZIP hinzu, und doppelklicken Sie dann auf die Datei, um sie zu öffnen.
8. Fügen Sie die Anpassungsdatei dem Container hinzu, indem Sie den Ordner „customUI“ vom Desktop auf die ZIP-Datei ziehen.
9. Extrahieren Sie die RELS-Datei auf dem Desktop. Ein Ordner _rels, der die RELS-Datei enthält, wird auf den Desktop kopiert.
10. Öffnen Sie die RELS-Datei, und fügen Sie die folgende Zeile zwischen dem letzten Relationship-Tag und dem Relationships-Tag hinzu. Dadurch wird eine Beziehung zwischen der Dokumentdatei und der Anpassungsdatei erstellt.

<Relationship Id="someID" Type="http://schemas.microsoft.com/office/2006/relationships/ui/extensibility" Target="customUI/customUI.xml" />

11. Schließen und speichern Sie die Datei.
12. Fügen Sie den Rels-Ordner wieder zur Containerdatei hinzu, indem Sie ihn vom Desktop ziehen und die vorhandene Datei überschreiben.
13. Benennen Sie die Dokumentdatei in den ursprünglichen Namen um, indem Sie die Erweiterung “.zip„ entfernen.
14. Öffnen Sie das Dokument. Beachten Sie, dass im Menüband nun die Registerkarte My Tab angezeigt wird.
15. Wählen Sie die Registerkarte aus, und beachten Sie die Gruppe „Beispielgruppe“ mit einem Schaltflächensteuerelement.
16. Klicken Sie auf die Schaltfläche, um den Firmennamen in das Dokument einzufügen.
<<

Als wichtige Bestandteile werden also benötigt:

  1. eine Datei customUI.xml mit Angaben für Registerkarte, Gruppe und Makroschaltfläche
  2. ein Ordner customUI
  3. eine Datei .rels
  4. VBA-Code für die Schaltfläche

Die Anweisung „ByVal control As IRibbonControl“ im VBA-Code ist wichtig, sonst funktioniert die Schaltfläche nicht.

Getestet werden muss noch, ob der VBA-Code wirklich direkt dem Modul „This Document“ zugeordnet sein muss oder ob ein neues Modul mit benutzerdefiniertem Namen zugeordnet werden kann, auf das in der customUI.xls-Datei Bezug genommen werden kann.

Mini-Symbolleiste

Die Mini-Symbolleiste in Word 2007, 2010, 2013 und 2016 kann nicht verändert werden!

word_2007_minisymbolleiste.jpg
Mini-Symbolleiste in Word 2007: Der Schnellformatvorlagenkatalog ist in der ersten Menüzeile zugänglich.

Standardspeicherorte für Dateien

Für Dokumente und Dokumentvorlagen werden die Standardspeicherorte in den Word-Optionen unter „Speichern“ festgelegt:

  • Das Häkchen bei „OneDrive- und SharePoint …“ ist nur wichtig, wenn mit mehreren Personen gleichzeitig an einem Dokument gearbeitet wird.
  • „Backstage beim Öffnen … nicht anzeigen“ führt dazu, dass man nach dem Abschicken des Speichern-Befehls direkt im Fenster „Speichern unter“ landet.
  • „Standardmäßig auf Computer speichern“: Ist dieses Häkchen nicht gesetzt, bietet Word standardmäßig eine Online-Speicherung an.

MathType, Word-eigener Formeleditor und Layoutprogramme

Aus irgendwelchen Gründen hat Microsoft die Zusammenarbeit mit Design Science (dem MathType-Entwickler) aufgekündigt. Bereits seit Word 2007 hat Word einen eigenen Formeleditor (es hatte immer einen eigenen, aber in früheren Versionen fristete er ein absolutes Schattendasein; wobei mit diesem eigenen Formeleditor nicht die abgespeckte Version von MathType gemeint ist, die ab Word 97 zum Standard-Repertoire von Word gehörte; der „eigene“ Formeleditor geht noch auf DOS-Zeiten zurück). Der neue Word-eigene Formeleditor ist ein XML-Tool, das es in ähnlicher Form auch in OpenOffice und in GoogleDocs gibt. Wie diese ist er proprietär, d.h. er verträgt sich mit kaum etwas anderem. Weshalb dieser absolute Rückschritt von Microsoft vollzogen wurde, ist mir nicht klar und es gibt auch in den einschlägigen Foren keine Antwort darauf. Aber es scheint endgültig zu sein.

Konsequenz: Ab Word 2010 kann MathType nicht mehr wie gewohnt in Word eingebunden werden. D.h. u.a., dass MathType nicht in der Multifunktionsleiste erscheint und dass sämtliche von Design Science speziell für Word geschriebenen Makros nicht mehr laufen. Daher können nicht mehr alle in einem Text enthaltenen Formeln auf einen Schlag z.B. mit einer neuen Schrift versehen werden. Und Formeln (auch die des Word-eigenen Formeleditors!) lassen sich nicht mehr auf einfache Weise durchnummerieren. In Word 2007 war MathType noch vollkommen in Word integriert (obwohl das ja auch schon auf XML basiert). Erst mit der Version 2010 wurde ein radikaler Schnitt vorgenommen (genau wie hinsichtlich der Einbindung von Acrobat).

Anmerkung:

  • Wie erneute Tests zeigen, kann man auch ab Word 2010 eine Registerkarte „MathType“ zum Vorschein bringen, und zwar indem man eine der im MT-Programmordner liegenden MT-Commands-Dokumentvorlagen mit Word verbindet, also als globale Dokumentvorlage hinzufügt. Welche der Dokumentvorlagen die richtige ist, muss auspobiert werden, bis keine Fehlermeldungen mehr kommen. Auch, ob 32- oder 64-bit-Version, muss getestet werden. Danach stehen, wenn man Glück hat, einige oder die meisten MT-Makros zur Verfügung. Wie gut alles funktioniert, scheint sehr von der Kombination der Versionen von Word und MathType abzuhängen. Die Kombination Word 2010 und MathType 6.5 harmoniert z.B. nicht, denn hier ist zwar die Registerkarte zu sehen, aber alle Makros sind inaktiv. Ganz gut klappt die Zusammenarbeit zwischen Word 2016 und MathType 6.9: Hier scheinen die meisten Makros aktiv zu sein. Was allerdings nicht klappt, ist das Konvertieren von Formeln - es kommt die Meldung, eine bestimmte Vorlagendatgei würde fehlen. Darauf geht sogar die DesignScience-Website (http://www.dessci.com/en/support/mathtype/convertommldownload.htm) ein und rät, ihnen eine E-Mail zu schicken, damit sie Tipps zum Lösen des Problems geben können.

Zum Glück funktionieren bei allen Kombinationen aus Word ab 2007 und MathType ab 6.5 noch einige grundlegende Dinge:

  • nach wie vor lassen sich alle MathType-Formeln als OLE-Objekte in eine Word-Datei einbetten (wer weiß, wann Microsoft das OLE-Prinzip aufgibt). Das heißt auch, man kann ein Makro aufzeichnen, das MathType aufruft.
  • MathType-Formeln, die als Objekte in Word eingebettet sind, lassen sich per Doppelklick zum Bearbeiten (in MathType) öffnen.
  • Formeln lassen sich direkt aus dem geöffneten MathType-Fenster in die ebenfalls geöffnete Word-Datei ziehen.

Etwas umständlich ist die Nummerierung von Gleichungen:

  • am besten baut man sich einen Schnellbaustein (oder zeichnet ein Makro auf), der aus einer zweispaltigen, einzeiligen Tabelle ohne Rahmen besteht und in deren rechter Zelle die Nummer platziert wird; die Formel kommt in die linke Zelle. Die rechte Zelle ist gerade so breit, dass sie die Nummer (die üblicherweise in Klammern eingeschlossen ist) aufnehmen kann. Die Formel kann in der linken Zelle mittig oder mittels Tabulator horizontal ausgerichtet werden. Damit die Nummer genau auf der Höhe der Formelmitte steht, muss die vertikale Ausrichtung (ein Tabellenbefehl) entsprechend eingestellt werden. Als Gleichungsnummer wird einfach das Autonum-Feld eingefügt. Das fertige Konstrukt kann nun als Schnellbaustein abgespeichert werden (Menüband <Einfügen - Schnellbaustein>, Namen vergeben).

Anmerkung:

  • Bei der Kombination Word 2016 und MathType 6.9 funktioniert die Gleichungsnummerierung per MT-Makro.

Word-eigener Formeleditor und Schriften

Der eingebaute lässt auf den ersten Blick nur eine einzige Schrift zu. Man kann aber die Schrift einer Formel komplett (oder eines markierten Teils einer Formel) mit dem Befehl Normaler Text, der sich links auf der Registerkarte Formeltools befindet, in normale Schrift umwandeln. Danach kann man jede beliebige Schrift auf die Formal anwenden. Allerdings stimmen nun weder die Abstände noch die Kursivierung.

Eine andere und bessere Möglichkeit ist, die Standardschrift zu verändern, die von Formeln verwendet wird. Word bietet von hause aus nur die Cambria an, arbeitet aber perfekt mit einigen TeX-Schriften zusammen: Asana Math und XITS Math sind zwei solcher Schriften, die vom CTAN-Server heruntergeladen werden können. Nach dem Download einfach in den Fonts-Ordner des Systems kopieren. In Word kann man bei den Formeltools die Formeloptionen aufrufen und die Standardschrift einstellen.

Die Schriftgröße lässt sich immer nur für die komplette Formel, nicht für Formelteile, wählen - vorausgesetzt, man arbeitet mit der Standard-Formelschrift. Sind Formelteile in normalen Text umgewandelt (s.o.), so kann deren Schriftgröße unabhängig von der restlichen Formel eingestellt werden. Ob das sinnvoll ist (aus typografischen Gründen), mag dahingestellt sein.

Word-Formeln und Layoutprogramme

Beim Platzieren in InDesign oder Importieren in FrameMaker kommen die Formeln als reine Grafiken rüber. D.h. eine nachträgliche Bearbeitung ist nicht möglich. Die Größe der Grafiken lässt sich zwar im jeweiligen Layoutprogramm verändern, aber „professionell“ kann diese Art der Weiterverarbeitung nicht genannt werden!

MathType-Formeln können dagegen nach wie vor als Einzeldateien abgespeichert und per Herausgeben und Abonnieren in InDesign oder FrameMaker eingebunden werden. Bei FrameMaker funktioniert sogar OLE. Dass es bei diesem professionellen Verfahren Probelem mit den Schriften geben kann, ist ein anderes Thema, dass bei MathType behandelt wird.

Umwandlung von Word-Formeln in MathType-Formeln

  • Bis einschließlich Word 2013 wird die Syntax des Word-eigenen Formeleditors von MathType verstanden, d.h., wenn man eine Word-Formel kopiert und in MathType einfügt (man kann sie auch einfach aus der Word-Datei in das geöffnete MathType-Fenster ziehen), wird sie automatisch in eine MathType-Formel umgewandelt.
  • Ab Word 2016 hat sich die XML-Struktur der Word-eigenen Formeln so geändert, dass sie von MathType (selbst in der Version 6.9) nicht automatisch verstanden werden. Zum Glück hilft eine kleine Einstellung in Word, um die Kompatibilität wiederherzustellen, und zwar dient MathML als Austauschformat; das verstehen beide. Word ist standardmäßig so eingestellt, dass beim Kopieren einer Formel nicht MathML entsteht, sondern ASCII-Text. Um das zu ändern, ist wie folgt vorzugehen:
    • Aufrufen des Options-Fensters von der Formel-Registerkarte (Gruppe „Tools“) aus:

  • Auswahl der MatML-Konvertierung:

  • Das heißt aber: MathType kann nach wie vor als Konvertierer für Word-eigene Formeln verwendet werden! Man beachte: Sind Formeln erst einmal in MathType, können sie von hier aus über die Kopiereinstellungen in zahlreiche andere Formate (u.a. TeX und LaTeX) umgewandelt werden; darüber hinaus ist ein Abspeichern in den üblichen Vektorgrafikformaten möglich.

Umwandlung von MathType-Formeln in das Format des Word-internen Formeleditors

In der Standardeinstelllung können MathType-Formeln nicht im Word-eigenen Formel-Format kopiert oder abgespeichert werden; es ist lediglich möglich, eine MathType-Formel in den Baustein der Word-Formel einzufügen, sie bleibt dort aber ein MathType-Objekt. Das gilt, wie gesagt, für die Standardeinstellung. Aber auch hier (wie in der anderen Richtung von Word zu MathType) hilft MathML! In MathType kann bei den Einstellungen zum Ausschneiden/Kopieren zwischen drei MatML-Arten gewählt werden. Die für Word richtige ist MathML 2.0 (namespace attr):

Darüber hinaus bietet die Firma GrindEQ (www.grindeq.com) eine Konvertierungsmöglicheit an: Das Programm MathTypeToEquation (aufgepasst: nur die 32-bit-Version funktioniert zusammen mit einem 32-bit-Word 2010/2013; die 64-bit-Version von MathTypeToEquation harmoniert nur mit Word 2007 und älter!) klinkt sich in das Menüband ein, außerdem wird ein Speichern-unter-Filter in Word integriert. Über das Menüband kann man MT-Formeln einzeln konvertieren, die Speichern-Unter-Variante erlaubt die Konvertierung aller Formeln auf einmal. Beim Speichern-unter wird ein spezielles RTF-Format (GrindEQ-RTF) angeboten. Nach dem Speichern muss die Datei geschlossen werden. Wird diese RTF-Datei mit Word geöffnet, sind sämtliche Fromeln in das Format des Word-internen Formeleditors konvertiert.

Mit einem solchen Konverter (oder aber auf Basis der obigen MatML-Einstellung in MathType) können Personen, die MathType nicht besitzen, in die Lage versetzt werden, MathType-Formeln zu bearbeiten. Es gilt tatsächlich: Egal, ob MathType auf einem Rechner installiert ist oder nicht - Dokumente lassen sich immer so aufbereiten, dass enthaltene MT-Formeln anschließend mit den Word-eigenen Mitteln bearbeitet werden können.

Bilder und Grafiken

Bildgruppierung

In Word-2010 gibt es die Funktion „Gruppierung“, mit der Komplexbilder (also solche, die aus übereinanderliegenden Einzelteilen bestehen) zu normalen Einfachbildern zusammengefügt werden können. Dazu einfach die Einzelteile bei gedrückter Umschalttaste markieren und dann den Befehl Menüband <Format - Anordnen - Gruppieren> aufrufen.

Achtung: Wenn ein Teilbild in der Zeile verankert ist, andere Teilbilder aber vor dem Text liegen, klappt bereits die gemeinsame Markierung nicht. Gemeinsam markieren lassen sich nur Bilder oder Grafiken, die vor dem Text liegen. D.h., bei in der Zeile verankerten Bildern muss man zunächst die Position ändern, so dass sie vor dem Text liegen. Dadurch verrutschen die Bilder und müssen erst wieder richtig angeordnet werden. Dann markieren und gruppieren, danach dann die Position des „Gruppenbildes“ auf „Mit Text in Zeile“ stellen.

Derartig aufbereitete Bilder werden korrekt in HTML und in EPUB bzw. MOBI umgewandelt!

Import gruppierter Bilder in Layoutprogramme

Wird die docx-Datei durch anhängen von .zip in ein Archiv umgewandelt und werden die Bilder dort herauskopiert, so können sie in ein Layoutprogramm wie InDesign eingeladen werden. Es zeigt sich, dass dabei die Gruppierung, die in Word vorgenommen wurde, verlorengeht! Man muss also für die Weiterverarbeitung in Layoutprogrammen zu anderen Gruppierungsmitteln greifen. Am besten ist es, SnagIt zu verwenden, also einen Screenshot eines Komplexbildes zu machen; Vorteil von SnagIt: die Auflösung kann auf hohe Werte (z.B. 600 dpi) eingestellt werden. Eine andere Möglichkeit wäre, die Word-Datei in PDF umzuwandeln und dann mit dem Schnappschussswerkzeug zu arbeiten (vgl. PDF).

Bildmarkierung allgemein

Anders als in älteren Versionen kann man in Word 2010/2013 mit dem Werkzeug 'Objekt markieren' nicht mehr einen Markierungsrahmen um mehrere Grafikobjekte auf einer Seite ziehen. Mit dieser alten Methode war es möglich, sämtliche grafischen Objekte auf einer Seite zu finden, selbst wenn wie so klein oder so formatiert (Rahmen, Füllung Schrift) waren, dass sie nicht gleich auffielen. Als Ersatz dafür gibt es jetzt den sog. Auswahlbereich. Dieser listet in einem separaten (verschiebbaren) Fenster alle Grafikobjekte auf einer Seite auf. Im Fenster kann man dann jedes Objekt, egal, wie es formatiert ist, anklicken, was zu einer Markierung im Dokument führt.

Anmerkungen zum Auswahlbereich

  • Eingeschaltet werden kann der Auswahlbereich auf zwei Weisen:
    • Menüband <Start - Bearbeiten - Markieren - Auswahlbereich> oder
    • falls bereits eine Grafik markiert ist: Menüband <Zeichentools - Anordnen - Auswahlbereich>
  • Microsoft ist mit dem Auswahlbereich einen weiteren Schritt Richtung Layoutprogramm gegangen, denn der Auswahlbereich entspricht dem Fenster 'Ebenen' in Layoutprogrammen wie InDesign. Man muss sich vor Augen führen, dass Grafikobjekte, die nicht direkt in der Zeile verankert sind, in einer Ebene über dem Text liegen, nämlich in der sog. Zeichenebene (besser: Zeichnungsebene!). Mit den Mitteln des Auswahlbereichs können Objekte in der Zeichenebene ein- und ausgeblendet werden!
  • Konsequenz: Es kann passieren, dass eine Word-Datei Objekte enthält, die man auf den ersten Blick nicht sieht! Mir ist noch nicht klar, wie man es schaffen kann, bei einer zugesandten Word-Datei zu erkennen, ob sie solche „verborgenen“ Objekte enthält. Denn:
  • Der Auswahlbereich wirkt nur seitenweise. D.h., er zeigt Seite für Seite die vorhandenen Objekte an. Man muss anscheinend, um ausgeblendete Objekte zu finden, die Seiten bei eingeschalteten Auswahlbereich der Reihe nach durchschauen.
  • Der Auswahlbereich ist nur zugänglich, wenn man nicht im Kompatibilitätsmodus arbeitet.

Einfügen von Grafiken/Bildern

In Word lassen sich Bilder oder Grafiken grundsätzlich auf drei Weisen einfügen:

  • a) per Einbetten, also z. B. per Einfügen aus der Zwischenablage oder per Menüband <Einfügen - Grafik - Einfügen> (ab 2013: Menüband <Einfügen - Bilder - Einfügen>)
  • b) per Verknüpfen, also: per Menüband <Einfügen - Grafik> (ab 2013: Menüband <Einfügen - Bilder>), dann Button „Einfügen“ aufklappen und „Verknüpfen“ wählen
  • c) per Feld „Includepicture

Vorteile des Verknüpfens (im Vergleich zum Einbetten)

  • Dokument bleibt kleiner
  • Bild kann mit externen Programm (wie PhotoShop, IrfanView, Illustrator, CorelDraw) bearbeitet und für Word vorbereitet werden
  • bei Änderungen am Bildinhalt muss Bild nicht erneut in Word eingebunden werden, sondern man braucht nur die Datei im Ordner auszutauschen; dabei wichtig: Dateiname muss derselbe sein
  • Auflösung entspricht immer der Auflösung des Originalbildes

Vorteile des Includepicture-Feldes

  • am wichtigsten: die Quelle des Bildes wird in Form des Pfad- und Dateinamens als Feldinhalt mitgeführt; d.h., man kann druch Einblenden des Feldinhalts sofort erkennen, wo das Bild liegt und wie die Datei heißt
  • Feldinhalt kann jederzeit manuell aktualisiert werden
  • Feldinhalt wird beim Drucken und Öffnen/Schließen des Dokuments aktualisiert
  • über Schalter kann bestimmt werden, ob das Bild eingefügt oder nur verknüpft werden soll; d.h., die obigen Varianten a und b sind zusätzlich wählbar.

<hi>Erkenntnis: im professionellen Umfeld sollte nur die Includepicture-Feld-Variante genommen werden!</hi>

Aktualisieren von verknüpften Grafiken in Word 2010/2013/2016

Geht nur über den Backstage-Bereich: Menüband <Datei - Informationen>, dann rechts unten „Verknüpfungen mit Dateien bearbeiten“: Es geht ein Fenster auf, in dem alle nötigen Einstellungen vorgenommen werden können.

Achtung: „Verknüpfungen mit Dateien bearbeiten“ steht erst dann Verfügung, wenn wenigstens ein Bild per „Verknüpfen“ eingefügt wurde.

Besonderheiten der Zwischenablage

  • Ein verknüpftes Bild wandert als Word-Grafikobjekt in die Zwischenablage, wenn es in Word kopiert wird. Mit Strg-v wird es demgemäß auch wieder als Word-Grafikobjekt in einer Word-Datei (derselben oder einer anderen) eingefügt. D.h., es ist auch nach dem Einfügen wieder mit der Quelle verknüpft und nicht in die Datei eingebettet.
  • Wird ein verknüpftes oder in Word eingebettetes Bild kopiert und dann nicht einfach per Strg-v in Word eingefügt, sondern indem per „Inhalte einfügen“ eines der angebotenen Formate gewählt wird, so bestimmt das Format, was hinsichtlich der Auflösung passiert! Mehr dazu unten bei Auflösung.
  • Bilder aus anderen Anwendungen (wie Photoshop) lassen sich über die Zwischenablage hinsichtlich Format und Auflösung nicht kontrollieren. Was an Formaten in Word angeboten wird, hängt nämlich auch davon ab, wie das Erzeugungsprogramm mit der Zwischenablage umgeht. Das aber kann von Word aus nicht vorhergesehen oder beeinflusst werden. Bilder aus Photoshop z.B. landen standardmäßig als Bitmaps (Format unbestimmt) in Word und haben eine Auflösung von 96 dpi - unabhängig von den Word-Optionen! D.h., bei Bildern aus anderen Anwendungen empfiehlt sich, die Zwischenablage zu umgehen und die Bilder per Menüband <Einfügen - Grafik/Bilder - Einfügen> oder <Einfügen - Grafik/Bilder - Verknüpfen> in Word einzubinden.

Auflösung von Grafiken/Bildern

Die Auflösung von Bildern in Word wird bestimmt von

  • der Art des Einfügens
  • den Optionen der Bildkomprimierung

Die meisten Bilder, die in Word eingefügt werden, sind ursprünglich separat, also mit einem anderen Programm, erzeugt worden. Solche Bilder haben bestimmte Formate (wie png, jpg, tif, eps, bmp usw.) und bestimmte Auflösungen (oft nicht bewusst gewählt, sondern vom jeweiligen Programm vorgegeben). Für einen professionellen Druck oder auch für ein E-Book sollte der Auflösungswert eines jeden Bildes bekannt sein, damit das Bild entsprechend weiterverarbeitet werden kann.

Am besten lässt man jedes Bild, das in Word eingefügt werden soll, zunächst über Photoshop laufen, um hier die Auflösung festzustellen und evtl. zu ändern. Auch das Bildformat und evtl. die Farbeinstellungen können in Photoshop kontrolliert und bei Bedarf geändert werden.

Was passiert beim Einfügen in Word, wenn ein Bild z. B. eine Auflösung von 300 dpi hat und in einem der Formate png, tif oder jpg vorliegt?

Die Standardeinstellung von Word steht auf 220 dpi. D.h., die Auflösung eines jeden Bildes wird automatisch auf 220 dpi reduziert, falls seine ursprüngliche Auflösung höher war! Spürbar wird der Effekt, sobald die Datei abgespeichert wird. Die Voreinstellung kann zum Glück verändert werden:

  • Menüband <Datei - Optionen - Erweitert>, dann im Bereich „Bildgröße und -qualität“ entweder für die aktuelle Datei oder für „alle neuen Dokumente“ einstellen:
    • Standardzielausgabe festlegen auf: 220, 150 oder 96 dpi oder
    • Häkchen setzen bei „Bilder in Datei nicht komprimieren“

Das Setzen des Häkchens bewirkt, dass die Bilder ihre ursprüngliche Auflösung beibehalten. D.h., es sollte gesetzt werden, wenn es um professionelles Drucken oder das Erzeugen von hochaufgelösten PDFs geht!

Wie kommt die Art des Einfügens ins Spiel?

  • Sämtliche Optionseinstellungen in Word gelten zunächst nur für eingebettete Bilder, die über den Weg Menüband <Einfügen - Grafik/Bilder - Einfügen> eingefügt werden. Für Bilder, die über die Zwischenablage eingebettet werden, gelten u. U. andere Gesetze!
  • Wird ein Bild nur verknüpft, aber nicht eingebettet, hat es unabhängig von den Word-Einstellungen immer seine Originalauflösung.
  • Zwischenablage innerhalb von Word (also Kopieren in Word, Einfügen in Word) (andere Anwendungen siehe unten):
    • Strg-v führt dazu, dass ein Bild in seinem Originalformat (z.B. jpg, png oder tif) eingebettet wird. Die Auflösung hängt (wie beim Verknüpfen) von den Word-Optionen ab.
    • Wird ein verknüpftes oder in Word eingebettetes Bild kopiert und dann nicht einfach per Strg-v in Word eingefügt, sondern indem per „Inhalte einfügen“ eines der angebotenen Formate gewählt wird, so bestimmt das Format, was hinsichtlich der Auflösung passiert:
FormatAuflösung nach dem Einfügen in Word (dpi)
gif72
jpg120
png150
tif: wird nicht angeboten -

Diese Effekte sind unabhängig von den Optionseinstellungen! D.h., selbst wenn das Häkchen bei „Bilder in Datei nicht komprimieren“ gesetzt ist, führt jedes Einbetten per „Inhalte einfügen“ zu diesen Werten.

Die höchste Auflösung per „Inhalte einfügen“ wird also mit dem png-Format erzielt.

Fazit: Grundsätzlich sollte auf den Weg über die Zwischenablage besser verzichtet werden, weil man Format und Auflösung nicht richtig im Griff hat. Auf jeden Fall sollte mit Blick auf eine professionelle Weiterverarbeitung zumindest das Häkchen bei „Bilder in Datei nicht komprimieren“ gesetzt werden!

Bilder aus anderen Anwendungen

Test haben ergeben, dass Bilder aus anderen Anwendungen (wie MathType, Photoshop, Illustrator, Corel Draw usw.) über die Zwischenablage hinsichtlich Format und Auflösung nicht kontrolliert werden können. Bilder aus Photoshop z.B. landen standardmäßig als Bitmaps (Format unbestimmt) in Word und haben eine Auflösung von 96 dpi - unabhängig von den Word-Optionen! D.h., bei Bildern aus anderen Anwendungen empfiehlt es sich, die Zwischenablage zu umgehen und die Bilder ausschließlich per Menüband <Einfügen - Grafik/Bilder - Einfügen> oder <Einfügen - Grafik/Bilder - Verknüpfen> in Word einzubinden.

Übersicht:

AktionFormatAuflösung
1. Einbettung über Zwischenablage innerhalb von Word (also Copy und Paste innerhalb von Word)
a) per Strg-vBild wird im Originalformat eingebettet, wobei mit „Originalformat“ das Format gemeint ist, dass es in Word vor dem Kopieren hat (jpg, png oder tif) je nach Optionseinstellung 220, 150 oder 96 dpi oder Originalauflösung; Format hat keine Auswirkung auf Auflösung
b) per „Inhalte einfügen“Bild wird im gewählten Format eingebettetAuflösung von gewähltem Format abhängig: gif: 72 dpi, jpg: 120 dpi, png: 150 dpi; tif wird nicht angeboten; Optionseinstellungen spielen keine Rolle
2. Einbettung über Zwischenablage aus anderen Anwendungen (also Copy in anderer Anwendung, Paste in Word)Format kann nicht kontrolliert werden; Erfahrung: Bilder aus Photoshop landen immer als Bitmaps in Word Auflösung kann nicht kontrolliert werden; Erfahrung: Bilder aus Photoshop haben immer 96 dpi.
3. Einbettung über Menüband <Einfügen - Grafik/Bilder - Einfügen>Bild hat immer Originalformat (also das Format der separaten Bilddatei)je nach Optionseinstellung 220, 150 oder 96 dpi oder Originalauflösung; Format hat keine Auswirkung auf Auflösung
4. Verknüpfung über Menüband <Einfügen - Grafik/Bilder - Verküpfen>Bild hat immer Originalformat (also das Format der separaten Bilddatei) Bild hat immer Originalauflösung

Export von Grafiken/Bildern

Folgende Möglichkeiten bestehen:

  • per Copy and Paste über die Zwischenablage
  • per Speichern unter - Webseite (htm/html)
  • per Speichern unter - Webseite gefiltert (htm/html)
  • per XML-Zip-Container

Am schlechtesten ist der Weg über die Zwischenablage, weil (ähnlich wie beim Einfügen von Bildern in Word) keinerlei Kontrolle darüber ausgeübt werden kann, was mit Auflösung und Bildformaten passiert. Fazit: nicht verwenden!

Beim Speichern als Webseite legt Word einen separaten Bildordner an, in dem pro Bild zwei Versionen gespeichert werden: eine im Originalformat mit hoher Auflösung, eine in einem von Word vorbestimmten Format mit niedriger Auflösung.

Niedrige Auflösung bedeutet in der Standardeinstellung von Word: 96 dpi. Bei den Web-Optionen (im Speichern-Unter-Fenster unter „Tools“ aufrufbar) kann auch 72 dpi oder 120 dpi eingestellt werden.

Was „hohe Auflösung“ bedeutet, hängt vom Originalformat und der Originalauflösung des Bildes ab.

Liegt ein Bild im Original im Format jpg oder png vor, so wird es in seiner Originalauflösung (die z.B. 300 dpi betragen kann) abgespeichert und zusätzlich in niedriger Auflösung. Hat das Bild ein anderes Originalformat, so wird es als jpg- oder png-Bild, und zwar in niedriger Auflösung gespeichert. Insgesamt gilt:

Originalformatabgespeichertes FormatAuflösung
jpgjpgOriginal und niedrig
pngpng und jpgpng: Original; jpg: niedrig
gifgif und jpggif: Original; jpg: niedrig
emfpngniedrig
wmfpngniedrig

Beim Speichern als gefilterte Webseite erzeugt Word immer nur eine von ihm vorbestimmte Version des jeweiligen Bildes, und zwar grundsätzlich in niedriger Auflösung. Insgesamt gilt:

Originalformatabgespeichertes FormatAuflösung
jpgjpgniedrig
pngjpgniedrig
gifjpgniedrig
emfpngniedrig
wmfpngniedrig


Bemerkenswert ist, dass (bei beiden Webseite-Speichermöglichkleiten) das ursprpüngliche png-Format in jpg umgewandelt wird, während ursprüngliche Vektorformate wie emf und wmf in png umgewandelt werden.

Überlegung: Für E-Books wäre es gut, Vektorformate in Pixelformate umwandeln zu können, also z.B. über den Weg

  • Word-Datei als Webseite (nicht gefiltert) abspeichern; dabei werden die Vektorbilder in png-Bilder (niedrige Auflösung) umgewandelt und in einem separaten Ordner abgelegt
  • nun in der Word-Datei die dort vorliegenden Vektorbilder gegen die png-Bilder aus dem separaten Ornder austauschen
  • dann Word-Datei erneut als Webseite (nicht gefiltert) abspeichern; dadurch werden die pngs (ohne weiteren Auflösungsverlust) in jpgs umgewandelt.

Schlecht dabei ist, dass im ersten Umwandlungsprozess niedrigaufgelöste pngs entstehen. Aber einen Test ist es wert, denn die niedrige Auflösung reicht evtl. immer noch aus, um bei der Anzeige auf dem Reader alles erkennen zu können.

Möglicherweise lassen sich die Umwandlungsformate (wie wmf → png) in der Registry anders einstellen. Müsste getestet werden.

Wenn man wirklich die Originalformate in Originalauflösung aus einer Word-Datei herausholen möchte, bleibt nur ein Weg: der über den XML-Zip-Container:

  • geht nur mit docx- und docm-Dateien. D.h., eine .doc-Datei müsste erst mit Word 2007/2010/2013/2016 in eine .docx-/.docm-Datei umgewandelt werden
  • hat man z.B. eine xyz.docx-Datei, dann im Explorer oder einem Commander-Programm den Dateinamen ändern: hinter .dox einfach .zip schreiben, also: xyz.docx wird zu xyz.docx.zip. Das kennzeichnet die Datei als Zip-Archiv, das mit jedem Zip-Programm geöffnet werden kann. Im Unterordner Word-Media liegen alle Bilder. Sie können einfach herauskopiert und anderer Stelle gespeichert werden.

Umwandlung von farbigen Bildern in Schwarz/Weiß-Bilder

  • Bild anklicken, dann auf der Grafikregisterkarte in der Gruppe „Anpassen“ die Schaltfläche „Farbe“ wählen; hier die „Farbsättigung“ auf 0 % stellen.

Leider geht das nur Bild für Bild, nicht für alle Bilder auf einmal, aber immerhin.

Für eine E-Book-Weiterverarbeitung ist es effektiver, sämtliche Bilder, die nach dem HTML-Export im separaten Bild-Ordner liegen, mit einem Bildprogramm (Photoshop, ACDsee, IrfanView) im Batch-Verfahren auf Schwarz/Weiß (genauer: auf Graustufen) umzustellen.

Textmarken allgemein

Feststellen, welche Textmarke auf einem Textstück liegt

  1. In Textstücke klicken
  2. Menü [Einfügen – Textmarke]
  3. Das Fenster Textmarke geht auf; hier ist die Textmarke markiert, die mit dem Textstück verbunden ist. Sie (also der Name) kann kopiert und an anderer Stelle (im Dokument oder in einem Makro oder sonst wo) eingefügt werden. Das ist z. B. beim Verschieben von Textmarken hilfreich.

Verschieben einer Textmarke

  1. Namen der zu verschiebenden Textmarke in Zwischenablage bringen (siehe vorstehenden Punkt)
  2. Textstück, zu dem die Textmarke verschoben werden soll, markieren
  3. Menü [Einfügen – Textmarke]
  4. Das Fenster Textmarke geht auf; hier in den freien Streifen oben den Namen der Textmarke einfügen und Hinzufügen wählen. Dadurch wird der Name vom altem Textstück entfernt und die Textmarke dem neuen zugewiesen.

Erzeugung von PDFs

Bis zur Version 2007 bestand der Standardweg zur Erzeugung professioneller PDFs darin, in den Adobe-PDF-Treiber zu drucken. Dabei ließen sich alle wichtigen Parameter detailliert einstellen, z.B. konnte die Schrifteinbettung perfekt gesteuert werden und auch die Bildauflösung konnte man exakt einstellen. Seit Word 2010 und parallel dazu Acrobat X bzw XI hat sich alles geändert! Man sollte jetzt auf keinen Fall mehr direkt in den Adobe-PDF-Treiber drucken (weil die Bildauflösung dabei nicht mehr einstellbar ist!), und beim Schrifteinbetten gilt es ganz andere Dinge zu berücksichtigen als bisher (z.B. kann es von Vorteil sein, PDFs im Archivformat zu erzeugen). Näheres siehe Acrobat/PDF

Überarbeitungen drucken (PDF erzeugen) ohne Kommentare

Eine Möglichkeit besteht darin, die Datei im html-Format zu speichern und dann daraus PDF zu erzeugen.

Felder allgemein

  • Feldaktualisierung ausschalten: Strg-F11; wieder einschalten: Strg-Umsch-F11; das Auschalten bewirkt, das sämtliche manuellen Änderungen, die man vornimmt (z.B. Formatierungen) beim Drucken erhalten bleiben; kann auch hilfreich sein, wenn man z.B. ein IHV kopiert und in eine neue Datei eingefügt hat, um spezielle Kolumnentitel drüber zu setzen oder irgendeine Änderung vorzunehmen
  • Feldverknüpfung lösen, also das Umwandeln eines Feldes in üblichen Text (geht auch nach Strg-a!): Strg-6. Damit kann ein IHV oder Index endgültig fertig gemacht werden. Insbeondere lassen sich danach auch bei diesen Textteilen die Kolumnentitel setzen (was vor der Feldentkopplung nicht geht, weil das jeweilige Feld in der Feldansicht immer nur eine Seite beansprucht). Als alternative Tastenkombination zu Strg-6 funktioniert auch Strg-Umsch-F9. Hierzu gibt es auch ein Makro der MVPs:

For Each oField In ActiveDocument.Fields

  oField.Unlink 
  Next oField
  • Feldverknüpfung lösen bei „Citation“-Feldern: Ab Word 2007 ist eine Zitierfunktion im Programm eingebaut, was ja im Prinzip sehr schön ist. Es gibt allerdings ein Problem, wenn man diese Felder in normalen („statischen“) Text umwandeln möchte. Sie reagieren nämlich nicht auf Strg-6 (bzw. Strg-Umsch-F9)! Daher bleibt nur eines: die Felder der Reihe nach ausschneiden und unformatiert einfügen. Dazu zunächst die Feldansicht einschalten, damit jedes Feld markiert werden kann (Markierung geht nicht in Normalansicht!). Nun per F5 (oder Strg-g) von einem Feld zum nächsten springen. Man landet jeweils am Anfang eines Feldes und kann per <Strg-Umsch-Pfeil nach rechts> das komplette Feld markieren. Nun ausschneiden und unformatiert einfügen. Das ist es im Prinzip. Damit das Ganze nicht zu mühsam wird, kann ein Makro aufgezeichnet werden.
  • Leeres Feld einfügen: Ein leeres Feld wird mit Strg-F9 eingefügt. Es sind dann lediglich die geschweiften Klammern zu sehen und der Cursor blinkt dazwischen.

Berechnungen mit Feldern

  • Formel-Feld einfügen: Dazu zunächst mit Strg-F9 ein leeres Feld erzeugen. Dann das Gleichheitszeichen eintippen (zwischen den geschweiften Klammern): { = }. Hinter dem Gleichheitszeichen wird die Formel eingegeben. Die Formel kann sich aus anderen Feldern zusammensetzen.
    • Beispiele:
FormelErklärung
{ = {SEQ bild \c} + 1 }sucht die aktuelle Bildnummer und gibt einem um 1 erhöhten Wert wieder; kann z. B. verwendet werden, wenn ein Bildverweis im Text vor dem Bild kommt, man aber denselben Nummerierungslauf („bild“) verwenden möchte, der zur Nummerierung der Bilder eingesetzt wird. Zum SEQ-Feld siehe unten

Nummerierungen

Nummerierungen können auf unterschiedliche Weisen vorgenommen werden:

  • von Hand
  • mit den vorgegebenen Nummerierungstools
  • per vorgegebenen Listen-Formatvorlagen
  • per eigenen Listen-Formatvorlagen und zugehörigen „normalen“ Absatz-Formatvorlagen
  • mit dem ListNum-Feld
  • mit dem SEQ-Fed

Am sichersten sind die Methoden

  • von Hand,
  • per eigenen Listen-Formatvorlagen und zugehörigen „normalen“ Absatz-Formatvorlagen und
  • mit dem SEQ-Feld

Das manuelle Verfahren ist bei langen Dokumenten natürlich zu aufwändig und soll deswegen nicht näher betrachtet werden.

Die anderen beiden Verfahren sind so komplex, dass auf mein Buch zu Dokument- und Formatvorlagen in Word 210/2013 verwiesen sein soll.

Unter dem Strich lässt sich auf jeden Fall sagen, dass das Nummerierungsproblem heute (2015) noch dasselbe ist wie vor 13 Jahren, als Word 2002 herauskam und zum ersten Mal Listen-Formatvorlagen vorgestellt wurden. Keineswegs hat sich, wie von manchen behauptet, seit Word 2007 die Situation gebessert. Es ist kompliziert und wird es wohl auch bleiben. Aber wenn so vorgegangen wird, wie in meinem Buch beschrieben, kann nichts passieren.

Meine bevorzugte Methode, Überschriften oder auch andere Textstellen zu nummerieren, ist die mit dem SEQ-Feld. Die Nutzung dieses Feldes bietet dermaßen viele Möglichkeiten, dass alles andere in den Schatten gestellt wird. Eigene Listen-Formatvorlagen mit zugehörigen Absatz-Formatvorlagen zu nehmen, ist ebenfalls praktikabel, aber verglichen mit dem SEQ-Feld nicht so umfassend und flexibel.

Mit dem SEQ-Feld lassen sich beliebige Absätze nummerieren, ja man kann dieselben Absätze gleichzeitig auf unterschiedliche Weise mit Nummern versehen (siehe Absatznummerierung). Und mit diesen Absatznummern kann sogar ein Register erstellt (siehe Schalter des XE-FEldes ) oder ein automatisches Inhaltsverzeichnis erzeugt werden! Zum Inhaltsverzeichnis aus beliebigen Absätzen sei angemerkt, dass mit TC-Feldern („Verzeichniseintragsfeldern“) gearbeitet werden muss.

Autonummerierung mit SEQ-Feldern

Ein Problem von Word (und im Grunde von allen Text- und Layoutprogrammen!) ist die Verwaltung von automatischen Nummerierungen, also wenn man so will, die Verwaltung von nummerierten Listen. Es gibt zwar seit 2002 einen Formatvorlagentyp „Liste“, den Microsoft extra entwickelt hat, um die Autonummerierung in den Griff zu bekommen, aber in der Praxis zeigt sich immer wieder, dass Word aus dem Tritt gerät bzw. dass man als Anwender total überfordert ist, die zahlreichen Einstellungen bei der Definition der Listenformatvorlagen korrekt vorzunehmen. Nicht selten gibt man nach stundenlangem Probieren auf und nummeriert alles von Hand durch.

Ein Mittelweg zwischen manuell und vollautomatisch ist die Nummerierung mit den SEQ-Feldern. Diese Felder sind eigentlich zur Nummerierung von Abbildungen und Tabellen gedacht, sie können aber auch für beliebig andere Nummerierungen verwendet werden.

Vorgehen:

  1. Cursor blinkt einem neuen (leeren) Absatz (einfach durch die CR-Taste erzeugen)
  2. Feld-Einfügen-Befehl (über Menüband oder Button auf Schnellzugriffsleiste) aufrufen, das SEQ-Feld wählen
  3. Im SEQ-Feld-Fenster hinter SEQ eintippen: Test \r 1
  4. Dabei bedeuten: Test = Name der Nummerierung (kann beliebig gewählt werden), \r = Schalter für „renumbering“ (also erneut nummerieren), 1 = Startzahl, mit der die Nummerierung begonnen wird (d.h. SEQ Test \r 3 würde dazu führen, dass ab dieser Stelle eine Nummerierung ab 3 neu beginnen würde).
  5. OK
  6. Das erste SEQ-Feld ist im Dokument eingefügt.
  7. Nun wird noch ein SEQ-Feld benötigt, dessen Nummer automatisch hochgezählt wird. Dazu muss einfach ein anderer Schalter gesetzt werden. Das erste Feld kopieren und in die nächste Zeile einfügen
  8. Das zweite Feld bearbeiten: SEQ Test \n
  9. D.h. der Schalter \r wird durch den Schalter \n ersetzt, der die fortlaufende Nummerierung bewirkt.
  10. Zum Verwenden können noch Autotexte (oder die Autokorrektur) mit den beiden Feldern belegt werden: z.B. 1] für das erste Feld und n] für das zweite.
  11. Danach können die ursprünglichen zwei Zeilen, die zum Erzeugen der beiden Felder benötigt wurden, gelöscht werden, denn die Felder sind ja im Autotext oder der Autokorrektur „gespeichert“.

Indem man nun 1] F3 (falls Autotext) oder einfach nur 1] (falls Autokorrektur) eintippt, wird an dieser Stelle im Dokument ein SEQ-Feld eingefügt, das die Nummer 1 erzeugt. Dabei spielt es keine Rolle, ob dasselbe Feld oder ein anderes SEQ-Feld bereits vorher im Dokument steht. Immer ab der Stelle, wo 1] eingefügt wird, werden alle nachfolgenden SEQ-Felder bei 1 beginnend duchnummeriert. Das gilt aber nur solche SEQ-Felder, die denselben Nummerierungsnamen haben (im Beispiel „Test“) und den Schalter \n enthalten. D.h. an allen Stellen, die automatisch nummeriert werden sollen ist per n] F3 (Autotext) bzw. einfach n] (Autokorrektur) das zweite SEQ-FEld einzufügen.

Die Nummerierung wird (im Unterschied zu den üblichen Word-Listen) nicht automatisch aktualisiert, sondern man muss den gesamten Text markieren und die allgemeine Feldaktualisierungsfunktion aufrufen: F9.

In der Praxis benötigt man z.B. eine Nummerierung für die Kapitel, die nächste für die Unterkapitel, eine weitere für die Unterunterkapitel usw. D.h. man erzeugt die Felder

  • {SEQ k1 \r 1}
  • {SEQ kn \n}
  • {SEQ uk1 \r 1}
  • {SEQ ukn \n}
  • {SEQ uuk1 \r 1}
  • {SEQ uukn \n}

usw.

sowie

  • {SEQ k2 \r 2}
  • {SEQ uk2 \r 2}
  • {SEQ uuk2 \r 2}

usw.

Dabei sind k1, kn, uk1, ukn usw. die Nummerierungsnamen.

Entsprechend würde man in die Autokorrektur aufnehmen:

  • k1] wird ersetzt durch {SEQ k1 \r 1}
  • kn] wird ersetzt durch {SEQ kn \n}

usw.

In den Überschriften werden dann die Felder kombiniert:

{SEQ k1 \r 1}.{SEQ uk1 \r 1}.{SEQ uuk1 \r 1}<tab>Blablabla ((Überschrift von Unterunterkapitel 1.1.1))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
{SEQ k1 \r 1}.{SEQ uk1 \r 1}.{SEQ uukn \n}<tab>Blablabla ((Überschrift von Unterunterkapitel 1.1.2))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
{SEQ k1 \r 1}.{SEQ uk1 \r 1}.{SEQ uukn \n}<tab>Blablabla ((Überschrift von Unterunterkapitel 1.1.3))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
usw.

später im Text: {SEQ k2 \2}.{SEQ uk1 \r 1}.{SEQ uuk1 \r 1}<tab>Blablabla ((Überschrift von Unterunterkapitel 2.1.1))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
{SEQ k2 \2}.{SEQ uk1 \r 1}.{SEQ uukn \n}<tab>Blablabla ((Überschrift von Unterunterkapitel 2.1.2))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
{SEQ k2 \2}.{SEQ uk1 \r 1}.{SEQ uukn \n}<tab>Blablabla ((Überschrift von Unterunterkapitel 2.1.3))
TextTextTextTextTextTextText
TextTextTextTextTextTextText
usw.

Das Ganze ist schon noch recht aufwändig und auch fehleranfällig, aber wenn das System einmal steht, weiß man genau, wo man eingreifen muss, um Fehler zu korrigieren. Und es reicht aus, punktuell einzugreifen, denn F9 aktualisiert ja wieder auf Knopfdruck. Darüberhinaus hat man volle Kontrolle über den Aufbau der Nummerierung, man kann Tabulatoren, Punkte oder andere Zeichen nach Belieben (natürlich mit System) setzen, ohne dass irgendein geheimnisvoller Automatismus alles umformatiert!

Die Idee für diese Lösung stammt von David Knopf: www.knopf.com/tips/pdf/autonumber.pdf

Alle Schalter des SEQ-Feldes

  • \c Fügt die nächste Nummer der vorhergehenden Sequenznummer ein
  • \h Formatiert das Feldergebnis als ausgeblendeten Text ein (Verwendung in Querverweisen)
  • \n Fügt die nächste Folgenummer ein
  • \r Setzt die Nummerierung bei der Nummer fort, die nach dem „r“ eingegeben wird
  • \s Setzt die Nummerierung bei der Überschriftenebene fort, die nach dem „s“ eingegeben wird

Absatznummerierung

Zur Absatznummerierung gibt es mindestens 3 verschiedene Möglichkleiten:

  1. übliche Nummerierung per Listen bzw. Listenformatvorlagen
  2. Nummerierung per Makro mit dem Ziel, jeden Absatz zu nummerieren und die Nummer an den Anfang des Absatzes zu schreiben und als verborgenen Text zu formatieren.
  3. Nummerierung per Hand oder Makro mit dem Ziel, alle oder nur ausgesuchte Absätze zu nummerieren und die Nummer auf den Rand zu schreiben, also die Marginalientext-Funktion von Word zu nutzen.

Zu 1. siehe oben: Nummerierungen.

Zu 2. hat Jack Lyon, Autor von „Microsoft Word for Publishing Professionals“, ein Makro entwickelt:

Sub paranum()
'
' paranum Makro
'
'
Dim para, p
For Each para In ActiveDocument.Paragraphs
p = p + 1
para.Range.Select
Selection.MoveLeft Unit:=wdCharacter
Selection.Font.Hidden = True
Selection.Font.Color = wdColorRed
Selection.TypeText text:=LTrim(Str(p))
Next para
End Sub

Das Makro nummeriert alle Absätze fortlaufend und versteckt die Nummern dann (Selection.Font.Hidden = True). Er nutzt es z.B. in Dexter, seinem Word-Add-In zur Index-Erzeugung.

Zu 3: Marginalien können in Word mit Positionsrahmen erzeugt werden. Seit Word 2010 sind Positionsrahmen Teil der Definition von Absatzformatvorlagen. Gegenüber Textrahmen haben sie den großen Vorteil, in der Textebene zu liegen, währen Textrahmen immer in einer Ebene vor (oder „oberhalb“) des Textes liegen. In Positionsrahmen können Felder genauso verwendet werden wie im normalen Text. Das geht bei Textrahmen nicht. Daher kann man z.B das SEQ-Feld nicht in in einen Textrahmen stecken, aber in einen Positionsrahmen. Die Anordnung des Rahmens (z.B. horizontaler Abstand vom eigentlichen Fließtext Text) lässt sich bequem und genau einstellen. Positionsrahmen sind absolut stabil, bleiben also immer mit dem jeweiligen Absatz, der als Anker dient, verbunden und verschieben sich mit ihm, wenn es Layoutänderungen gibt.

Das besonders Gute: mit Marginalientext, der auf diese Weise erzeugt wird, können Absatznummern auf dem Rand vergeben werden, die

  1. wie Zeilennummern neben dem Text stehen und
  2. die zusätzlich zu anderen, evtl. schon vorhandenen Nummern verwendet werden können. D. h., auch ein Listenabsatz, der z.B. die Nummer 5 trägt, kann zusätzlich auf dem Rand eine Nummer erhalten, die z.B. angibt, um den wievielten Absatz im Kapitel es sich handelt, also z.B. 3.2.

Das könnte insgesamt dann so aussehen:

3.2   5. Text des Listenabsatzes Text des Listenabsatzes Text des Listenabsatzes Text des Listenabsatzes 
         Text des Listenabsatzes Text des Listenabsatzes Text des Listenabsatzes Text des Listenabsatzes

Man kann mit dem SEQ-Feld jede beliebige Nummerierungsart erzeugen; auch die Kombination mehrerer Nummern (wie im vorstehenden Beispiel Kapitelnummer und Absatznummer) ist möglich.

Auch Aufzählungen können auf diese Weise nummeriert werden. Es ist also kein Problem, so etwas wie

 
4.8    * Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext 
         Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext     
4.9    * Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext 
         Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext Aufzählungstext     

zu erzeugen!

Dieses Verfahren ist die Voraussetzung dafür, in einem Register die Seitenzahlen durch andere Nummern zu ersetzen. Mehr dazu unter Schalter des XE-Feldes

Syntax des ListNum-Feldes

{ LISTNUM [„Name“] [Schalter] }
„Name“ ist der Name des Nummerierungslaufs, für den die Schalter gelten sollen; „Name“ muss identisch mit dem Inhalt des Punktes „ListeNr-Feldliste“ in der Definition einer Listenformatvorlage sein, wenn mit dem ListNum-Feld der Neustart der Nummerierung gesteuert werden soll.
Schalter:

  • \l Gibt die Ebene der Liste an und setzt das Standardverhalten des Felds außer Kraft.
  • \s Gibt den Startwert für das Feld an. Hiermit muss es sich immer um eine ganze Zahl handeln.


Wichtig: das ListNum-Feld reagiert nur auf Listenformatvorlagen, die mit Absatzformatzvorlagen unterschiedlicher Gliederungsebenen verknüpft sind, wie z.B. Überschriftformatvorlagen oder speziellen Absatzformatvorlagen im Fließtext; standardmäßig stehen Absatzformatvorlagen auf Gliederungsebene „Textkörper“.

Syntax des StyleRef-Feldes

{ StyleRef [„Name“] [Schalter] } „Name“ ist der Name einer Formatvorlage. Dabei kann es sich um eine Absatz- oder Zeichenformatvorlage handeln.

  • Bzgl. der integrierten Überschriftformatvorlagen gibt es eine Besonderheit: Anstatt den vollen Namen zu verwenden, reicht es, wenn man die Ebenennummer eingibt; { StyleRef 1 } ist also gleichbedeutend mit { StyleRef „Überschrift 1“ }
  • Bei allen Formatvorlagen ist zu beachten, dass sie in Anführungszeichen zu setzen sind, wenn ihr Name einen oder mehrere Blanks enthält (daher “Überschrift 1„ und nicht einfach Überschrift 1)

Schalter:

  • \l Word durchsucht Seite von unten
  • \n bewirkt, dass nur die Nummer eines (automatisch) nummerierten Absatzes, der mit der Formatvorlage formatiert wurde, angezeigt wird.
  • \s hat dieselbe Wirkung wie \n; \s ist ein aus irgendeinem Grund „geheimer“ Schalter, denn er wird in der Word-Hilfe nicht erwähnt; er taucht auf, wenn man irgendwo in einem Dokument eine Beschriftung einfügt und dabei wählt, dass nur die Nummer angezeigt werden soll. Der Schalter dient als Vermittler der beiden Funktionen StyleRef und SEQ. Für StyleRef bedeutet \s, dass die aktuelle Nummer der Überschriftebene (z. B. 1) im Text eingefügt wird (vorausgesetzt, die Überschriften sind nummeriert). Im SEQ-Feld muss hinter \s noch angegeben werden, auf welche Überschriftebene Bezug genommen werden soll: \s 1 bedeutet z. B., dass auf Überschrift 1 Bezug genommen wird. Die SEQ-Nummerierung wird dann innerhalb des zugehörigen aktuellen Kapitels oder Unterkapitels bei 1 begonnen und fortlaufend hochgezählt.
  • \t bewirkt in Verbindung mit den Schaltern „\n“, „\r“ oder „\w“, dass das StyleRef-Feld nicht numerischen Text (Text ohne Trennzeichen) unterdrückt; es werden also nur die Zahlen angezeigt, die in einem Absatztext enthalten sind, der mit der Formatvorlage formatiert wurde (Beispiel: steht im Absatz „Abschnitt 10.1“, so wird nur „10.1.“ angezeigt)
  • Textmarken-bezogene Schalter:
    • \p bewirkt, dass das Feld seine Position relativ zur Quelltextmarke anzeigt, wobei die Angaben „oben“ oder „unten“ verwendet werden.
    • \r bewirkt, dass nur die Nummer eines Absatzes anzeigt wird, der 1. mit der Formatvorlage formatiert, 2. automatisch nummeriert und 3. mit einer Textmarke belegt wurde.
    • \w Fügt die Absatznummer des mit einer Textmarke versehenen Absatzes im vollständigen Kontext aus einer beliebigen Position im Dokument ein. Wenn z. B. auf den Absatz „ii.“ verwiesen wird, gibt ein StyleRef-Feld mit dem Schalter \w „1.a.ii“ als Ergebnis zurück.

Mit Textmarken sind hier ausschließlich die verborgenen, von Word in Zusammenhang mit integrierten Formatvorlagen vergebenen Textmarken gemeint, nicht benutzerdefinierte Textmarken! Während der Schalter \p unkritisch ist, bewirken die Schalter \r und \w nur dann etwas Sinnvolles, wenn im Dokument mit integrierten Absatzformatzvorlagen gearbeitet wurde. Hat man eigene Absatzformatvorlagen definiert, führen diese Schalter zur Anzeige 0 (oder zu Fehlermeldungen).

Einsatz der StyRef-Funktion in Kolumnentiteln:

Üblicherweise wird auf Absatzzeichenformatvorlagen verweisen. Das geht bzgl. der Anzeige in den meisten Fällen auch gut. Ein Problem entsteht, wenn im Absatz, der mit der Formatvorlage formatiert wurde, a) ein Carriage Return oder b) ein so langer Text enthalten ist, dass er nicht in die Kopfzeile passt. Lösen lässt sich das Problem, wenn ausschließlich auf Zeichenformatvorlagen verwiesen wird. D.h. zusätzlich zu Überschrift-Absatzformatvorlagen sollten immer passende Überschrift-Zeichenformatvorlagen definiert und in jeder Überschrift eingesetzt werden. Das ist zwar zusätzlicher Aufwand beim Formatieren von Überschriften, aber wesentlich weniger Aufwand als nötig wäre, wenn man die Kolumnentitel auf andere Weise (nämlich manuell) anpassen müsste.

Positionierung der StyRef-Funktion

Grundsätzlich kann die StyleRef-Funktion überall im Text positioniert werden. Manche Schalter wirken aber nur sinnvoll an bestimmten Stellen:

Schaltersinnvoller Einsatz
\lKopf- oder Fußzeile
\nüberall
\süberall
\tüberall
\pDokumenttext
\rDokumenttext
\wDokumenttext

MERGEFORMAT

In vielen Feldern taucht der Schalter

*\ MERGEFORMAT

auf.

Er bewirkt, dass das Resultat des Feldes (z. B ein lebender Kolumnentitel, der mit dem StyleRef-Feld erzeugt wurde) formatiert werden kann. Ist der Schalter nicht im Feld vorhanden, kann das Resultat nicht formatiert werden! Mit anderen Worten: Möchte man z.B. in einem Kolumnentitel bestimmte Stellen formatieren (fett, kursiv, hoch, tief) und hat damit keinen Erfolg, weil die Formatierung immer sofort wieder verschwindet, so lohnt es sich zu schauen, ob im Feld der Schalter *\ MERGEFORMAT vorhanden ist, Falls nicht: einfach eintippen. Danach sollte die Formatierung klappen.

Wörter zählen

Wichtig zu wissen: Die Option „ausgeblendeten Text drucken“ (unter Optionen - Anzeige) bewirkt, dass ausgeblendeter Text (wie die Indexmarken) mitgezählt wird. Also Häkchen wegnehmen, wenn z. B. die XE-Felder nicht mitgezählt werden sollen. Achtung: Wirksam wird die Optionsumstellung erst nach Schließen und Wiederöffnen der Datei!

Makros zum Wörterzählen:

Sub woerterzaehlen1()
'
' Wörterzählen inkl. Satzzeichen und nichtdruckbaren Zeichen (wie Return) 
'
'
  MsgBox ActiveDocument.Words.Count
End Sub
Sub woerterzaehlen2()
'
' Wörterzählen ohne Satzzeichen und nichtdruckbare Zeichen 
'
'
  MsgBox ActiveDocument.Range.ComputeStatistics(wdStatisticWords)
End Sub

Registerhaltigkeit

  • Um Register halten zu können, muss ein Grundlinienraster (siehe nachfolgenden Abschnitt) eingerichtet werden.
  • Außerdem sollten die Text- und Absatzformatierungen ausschließlich mit Formatvorlagen vorgenommen werden. In den Absatzformatvorlagen ist ein Zeilenabstand einzustellen, der einem Vielfachen eines Bezugszeilenabstandes entspricht, also z.B. 15 pt, 30 pt usw.; um die unterschiedlichen Schriftgrößen in Überschriften auszugleichen, sind die Überschrift-Formatvorlagen so anzulegen, dass die Summe aus Zeilenabstand und Abstand davor/dahinter in das virtuelle Grundlinienraster fällt (die Schriftgröße spielt dabei nur eine untergeordnete Rolle: sie darf nicht größer als der Zeilenabstand sein, was sie aber üblicherweise sowieso nicht ist).
  • Die Verschiebungen in senkrechter Richtung werden ausschließlich über manuelle Veränderungen von Absatzformatierungen heerbeigeführt, und zwar werden die Abstände vor oder nach den Absätzen verändert. Solche Änderungen bleiben auf Absätze beschränkt, die mit folgenden Absatzformatvorlagen (AFV) formatiert sind:
    • Überschrift-AFV
    • Bild-AFV
    • BU-AFV
    • spezielle AFV, die vor oder hinter Kästen stehen (die Kästen selber werden als Tabellen realisiert)
  • Das Grundlinienraster muss eingeschaltet sein. Die benötigten Abstandsveränderungen werden solange ausgeführt, bis die nachfolgenden Fließtextzeilen wieder in das Grundlinienraster fallen. Das heißt, es geschieht ausschließlich eine optische Kontrolle.
  • Bilder sollten ausschließlich in der Zeile positioniert werden. Wie ein Bild mitten in einem Absatz platziert werden kann, wie also der Text vor dem Bild beendet und danach fortgesetzt wird, siehe übernächsten Abschnitt.



Alternatives Vorgehen nach Christian Fahn „Auf richtiger Höhe“ (’technische kommunikation’, 34.Jahrgang(1)2012, Seite 24):
Es wird eine Leerzeile eingefügt und deren Zeilenabnstand wird wie benötigt eingestellt.
>>
„Abstand nach Leerzeile berechnen“
Setzt der Autor die Einfügemarke in die erste Zeile des Fließtextes nach der Leerzeile – siehe Kreis in Abbildung 1 –, so kann die Position der Zeile ermittelt werden. In der Statusleiste zeigt Word leider nur die Position in Zentimetern an. Dieser Wert lässt sich natürlich umrechnen: 1 cm entspricht 28,35pt. Es geht aber auch einfacher, und zwar mit dem „Direktbereich“ im Visual Basic Editor – [Alt] [F11] drücken, anschließend [Strg] [G]. Dort trägt der Autor folgende Zeile inklusive Leerzeichen ein und bestätigt mit [Enter]:

? selection.Information(wdVerticalPositionRelativeToTextBoundary)

Der angezeigte Wert zeigt die aktuelle Position in „pt“ an. Die Abweichung vom Vielfachen des festgelegten kleinsten Zeilenabstands ergibt den „Abstand nach“ für die Leerzeile. Ein weiteres Beispiel liefert Abbildung 2: 615 pt – 607,9 pt = 7,1 pt
<<

Grundlinienraster

Hilfreich ist es, das Grundlinienraster anzuzeigen:

  • Menüband <Ansicht - Häkchen bei Gitternetzlinien setzen>

Sollte es nicht zu sehen sein, so müssen die Optionen zu den Gitternetzlinien eingestellt werden. Sie sind nicht bei den anderen Word-Optionen zu finden, auch nicht beim Seitenlayout! Microsoft hat sie den Grafiken zugeordnet, wahrscheinlich weil man nur bei Grafiken angeben kann, dass sie sich an Hilfslinien (wie einem Grundlinienraster) ausrichten sollen. D.h., die Gitternetzlinien-Einstellungen gehören zu den Ausrichtungsoptionen:

  • auf eine vorhandene Grafik klicken oder, falls keine Grafik im Text enthalten ist, eine Dummy-Grafik einfügen und auf sie klicken
  • Menüband <Zeichnentools - Format - Gruppe „Anordnen“ - Ausrichten>
  • am Ende des Aufklappmenüs findet sich der Befehl „Rastereinstellungen“; im aufgehenden Fenster können folgende Einstellungen vorgenommen werden:
  • „Rastereinstellungen“: Abstand horizontal und vertikal, und zwar in den Einheiten, die in den Word-Optionen unter „Erweitert“ vorgewählt wurden; für die Kontrolle der Registerhaltigkeit sollte die Einheit „Punkt“ bzw. „pt.“ gewählt sein. Wichtig ist der vertikale Abstand, der am besten auf den Wert des Zeilenabstandes des Fließtextes eingestellt wird (also bei einer 10-pt-Schrift auf 12 pt)
  • „Rasterquelle“: Festlegung des Koordinatenursprung des Rasters; wenn das Häkchen „Seitenränder verwenden“ gesetzt wird, liegt der Koordinatenursprung genau in der linken oberen Ecke des Textrahmens. Das entspricht den Standardeinstellungen von Layoutprogrammen wie InDesign oder QuarkXpress. Um den Effekt sehen zu können, ist es gut, in den Word-Optionen bei „Erweitert- Dokumentinhalt anzeigen“ das Häkchen bei „Textbegrenzungen“ gesetzt zu haben; danach sollte die Anzeige der Textbegrenzungen aber besser ausgeschaltet werden, weil dann die Grundlinien besser zu sehen sind. Darüber hinaus empfiehlt es sich, virtuelle Führungslinien einzublenden (siehe dazu übernächsten Abschnitt).
  • Raster anzeigen: grundsätzlich ein- oder ausschalten (diese Einstellung hat eine höhere Priorität als das Häkchen „Gitternetzlinien“), Dichte der Rasterlinien am Bildschirm (1 heißt „jede“ Rasterlinie, 2 jede zweite, 3 jede dritte usw.); wird das Häkchen bei „vertikal“ weggenommen, wird tatsächlich ein Grundlinienraster angezeigt!

Um Registerhaltigkeit (s. o.) zu erreichen, besteht die Aufgabe besteht darin, an allen kritischen Stellen (z.B. nach einer Überschrift oder einer Bildunterschrift) den Absatzabstand davor oder dahinter so zu verändern, dass der nachfolgende Text in das Grundlinienraster rückt. Das Grundlinienraster erlaubt die optische Kontrolle.

Bildplatzierung an oberer Satzspiegelkante

Damit ein Bild einerseits in der Textebene (und nicht vor dem Text), andrerseits mitten in einem Absatz platziert werden kann, muss der Absatz mit einem harten Carriage Return geteilt werden. Es kann auch nötig sein, mehrere harte Zeilenschaltungen hintereinander einzugeben, also nichts anderes als mehrere Leerzeilen zu erzeugen. Das Bild wird in der letzten Leerzeile positioniert, sodass es auf der folgenden Seite genau an der oberen Satzspiegelkante angeordnet ist. Auf diese Weise schafft man es, den Text am Bild „vorbeilaufen“ (davor enden und danach weiterlaufen) zu lassen.

Damit bei Blocksatz die letzte Zeile des oberen Absatzteilstücks rechtsbündig ausläuft, muss der Blocksatz hier erzwungen werden. Darüber hinaus muss ein evtl. vorhandener Trennstrich hart eingetastet werden.

Nach dem Bild kann ganz normal die Bildunterschrift kommen.

Virtuelle Führungslinien

Diese können in der Kopfzeile eingebaut werden und gelten dann immer für den jeweiligen Abschnitt und hier jeweils für die rechte oder linke Seite.

Um den Satzspiegel und die Randspalte sichtbar zu machen, ist es am einfachsten, in der Kopfzeile Gradfikrahmen aufzuziehen und sie hinter den Text zu legen; außerdem sollte der Rahmenkante als Farbe ein zartes grau zugewiesen werden.

Benötigt werden Rahmen oder Linien nur in der Umbruchphase. Steht der Umbruch, werden Rahmen und Linien einfach aus der Kopfzeile entfernt. Der gesamte Abschnitt ist damit sofort bereinigt.

Text mit dem Advance-Feld positionieren/verschieben

Mit dem Advance-Feld ist es möglich, den Text, der direkt hinter dem Feld steht, in seiner Position zu verschieben. Eine waagerechte Verschiebung betrifft grundsätzlich den Text in der Zeile, in der das Feld angeordnet wird, wirkt sich aber natürlich auch auf die nachfolgenden Zeilen desselben Absatzes aus, weil sich der Zeilenfall ändert. Eine senkrechte Verschiebung wirkt sich auf den kompletten nachfolgenden Text aus, weil damit der Seitenumbruch verändert wird. Die Wirkung ist erst zu sehen, wenn von der Feldsyntax-Ansicht auf die normale Ansicht umgeschaltet wird.

Syntax: { ADVANCE [Schalter] [Verschiebung um pt] }

Beispiele:

  • {ADVANCE \r 10 }: verschiebt um 10 pt nach rechts
  • {ADVANCE \l 10 }: verschiebt um 10 pt nach links
  • {ADVANCE \u 10 }: verschiebt um 10 pt nach oben
  • {ADVANCE \d 10 }: verschiebt um 10 pt nach unten
  • {ADVANCE \x 10 }: verschiebt um 10 pt nach rechts, ausgerichtet an Spalte oder Rahmen
  • {ADVANCE \y 10 }: verschiebt um 10 pt nach unten, ausgerichtet an Spalte oder Rahmen

Das Feld lässt sich mitten in einer Zeile einbauen, sodass der links davon stehende Text unverrückt bleibt und nur der Text rechts vom Feld von der Verschiebung betroffen ist. Dadurch können beliebige Texte übereinander geschoben werden, was sonst nur mit der EQ-Funktion möglich ist.

Achtung
Die Verschiebung in senkrechter Richtung funktioniert in neueren Word-Versionen (365, 2019 und jünger) nicht!
Daher kann die Advanced-Funktion nicht verwendet werden, um Registerhaltigkeit zu erreichen!

Silbentrennung

Grundsätzlich ein- und ausschalten

Es gibt zwei Stellen, über die die Silbentrennung grundsätzlich ein-und ausgeschaltet werden kann:

  • dokumentbezogen, indem man im Fenster Silbentrennung (Word 2003 und älter: <Menü Extras - Silbentrennung>, Word 2007-2013: Registerkarte Seitenlayout - Bereich Seite einrichten - Button Silbentrennung) das Häkchen bei „keine“, „automatisch“ oder „manuell“ setzt
  • absatzweise.

Absatzweise Silbentrennung

  • Zu einem Problem bei der Silbentrennung kann es kommen, wenn sie grundsätzlich in allen Absätzen ausgeschaltet ist. Das scheint in älteren Word-Versionen (vor 2007) sogar die Standardeinstellung zu sein!
  • Abhilfe: Silbentrennung bewusst im Absatz einschalten. Dazu den jeweiligen Absatz oder das gesamte Dokument markieren, das Absatzformat aufrufen, dort auf den Reiter „Zeilen- und Seitenumbruch“ gehen und das Häkchen bei „Keine Silbentrennung“ wegnehmen! OK.
Nur wenn die absatzweise Silbentrennung eingeschaltet ist, kommt beim Aufruf der manuellen Silbentrennung das Fenster zur manuellen Silbentrennung zum Vorschein!
  • Soll in einem Absatz nicht getrennt werden (z.B. in einer Überschrift), dann muss das Häkchen bei „Keine Silbentrennung“ gesetzt werden!
  • Man kann die Silbentrennung nicht für einen markierten Bereich einstellen, der kleiner als ein Absatz ist (im Unterschied zur Sprache, die für jede markierte Textstelle unterschiedlich gewählt werden kann).

Manuelle Beeinflussung auf Wort-Ebene

Folgende Möglichkeiten stehen zur Verfügung:

  • Wort markieren, dann über <Menü Extras - Silbentrennung>, Word 2007-2016: <Registerkarte Seitenlayout - Bereich Seite einrichten - Button Silbentrennung> und dem Button „manuell“ das Fenster zur manuellen Silbentrennung aufrufen. Darin zeigt Word Trennvorschläge. Der blinkende Cursor kann per Cursortasten nach rechts oder links verschoben werden. Die Stelle, an der der Cursor blinkt, wird von Word als Trennstelle aufgefasst, auch wenn im Trennvorschlagsfenster die Trennstriche woanders sitzen. Die so gewählte Trennstelle wird nach OK als bedingter Trennstrich in den Text eingefügt. Wichtig: die Silbentrennung muss grundsätzlich eingeschaltet sein (siehe vorstehenden Punkt). Allerdings ist das Verfahren eigentlich überflüssig und unnötig kompliziert, weil dasselbe Ergebnis wie nachstehend beschrieben viel einfacher erreicht werden kann.
  • Direkt im Text kann per <Strg-Bindestrich> an jeder beliebigen Stelle ein bedingter Trennstrich eingegeben werden.
  • Das Einfügen eines bedingten Trennstrichs führt nicht dazu, dass sofort an dieser Stelle getrennt wird. Die Trennung erfolgt nur, wenn die „Umgebungsbedingungen“ erfüllt sind: In den Silbentrennoptionen, die per <Menü Extras - Silbentrennung> (vor Word 2007) bzw. <Registerkarte Seitenlayout - Bereich Seite einrichten - Button Silbentrennung> (Word 2007 und jünger) aufgerufen werden können, lassen dich die Silbentrennzone und die Zahl der aufeinanderfolgenden Trennstriche einstellen. Treffen diese Bedingungen auf eine Textstelle zu, so greifen die automatische oder manuelle Trennung – sonst nicht.
  • Die Frage lautet, ob man Word dazu bringen kann, ein Wort genau an einer gewünschten Stelle zu trennen - egal, wie die Optionen eingestellt sind. Nach meinen Tests geht das nur, indem man eine harte Trennung einfügt, also einen ganz normalen Bindestrich. Tricksen kann man, indem man die Zeile, die das zu trennende Wort enthält (es können auch mehrere Zeilen oder der Absatz sein), markiert und dann bewusst per <Schriftart - Erweitert - Abstand> die Buchstabenabstände ändert. Das führt allerdings dazu, dass der Text optisch nicht mehr schön ist.
  • Per <Strg-Umsch-Bindestrich> kann ein Bindestrich, der als Sollbruchstelle dient, von der Silbentrennung ausgeschlossen (geschützter Trennstrich) werden.
  • Jedes Wort kann von der automatischen Trennung ausgeschlossen werden, indem die Rechtschreibprüfung für das betreffende Wort deaktiviert wird. Zunächst das Wort markieren und dann zur Registerkarte »Überprüfen« gehen, dort: »Sprache« - »Sprache für die Korrekturhilfen festlegen«; dann die Option »Rechtschreibung und Grammatik nicht prüfen« aktivieren, OK. Dabei muss man aufpassen: Steht das Wort, das von der Trennung ausgeschlossen werden soll, in einer Klammer, muss evtl. die Klammer mitmarkiert werden, weil Word sonst nicht weiß, was man meint.

Zusätzlich lässt sich der Zeilenumbruch beeinflussen, indem übliche Leerzeichen in geschützte Leerzeichen umgewandelt werden: Leerzeichzen markieren und <Strg-Umsch-Leertaste> eingeben (wichtig z.B. bei Zahlen und nachfolgenden Einheiten,die nicht getrennt werden sollen).

Entfernen von Trennstrichen

Bedingte Trennstriche und Trennstriche, die von der Silbenstrenung ausgeschlossenn sind (sog. geschützte Trennstriche), lassen sich am schnellsten per Suchen-Ersetzen entfernen (^- bzw. ^~).

Sonderzeichen

ganz besondere Zeichen:

  • bedingter Nullbreite-Wechsel
  • Null-breiter Nicht-Wechsel

Beide sind unter <Einfügen–Symbol–Sonderzeichen> zu finden. Der Null-breite Nicht-Wechsel ist z.B. gut, wenn man verhindern möchte, dass ein längerer Strich (etwa m-Strich) in der ersten Zeile bleibt, während der zugehörige Text in die nächste Zeile rutscht. Mit dem Null-breiten Nicht-Wechsel bleiben beide einheiten zusammen.

Silbentrennung und Benutzerwörterbuch

In Word gibt es leider keine Verbindung zwischen beiden. D.h. im Benutzerwörterbuch können keine bedingten Trennstriche eingegeben werden! Die Silbentrennung ist somit nicht lernfähig (anders als in OpenOffice, wo die Verbindung zum Benutzerwörterbuch existiert).

Konsequenz: Will man ein bestimmtes Word überall im Text auf eine bestimmte Weise trennen, ohne manuell vorzugehen, so muss man zur Suchen-Ersetzen-Funktion greifen. Im Suchen-Bereich das ursprüngliche Wort eingeben, im Ersetzen-Bereich das Wort mit bedingten (oder auch geschützten) Trennstrichen. Sonderzeichen für bedingten Trennstrich: Dach-Bindestrich (also ^-), Sonderzeichen für geschützten Trennstrich: Dach-Tilde (also ^~).

Die so vorgenommene Trennung wirkt nur, wenn zwei Dinge beachtet werden:

  • Unter Menü <Extras -Silbentrennung> die automatische Silbentrennung einschalten.
  • Unter Menü <Format - Absatz - Zeilen- und Seitenumbrüche> das Häkchen bei „keine Silbentrennung“ wegnehmen; Achtung: wenn nichts markiert ist, gilt diese Änderung nur für den aktuellen Absatz; d.h., wenn die Silbentrennung für das gesamte Dokument eingeschaltet werden soll, so muss vorher alles markiert werden; einzig andere Möglichkeit: wurde konsequent mit Formatvorlagen gearbeitet, so können diese einfach so umdefiniert werden, dass in allen Formatvorlagen die Silbentrennung eingeschaltet ist.

Makros

Automatische Silbentrennung ein- und ausschalten

Wichtig beim Aufzeichnen: Es muss der Menüpunkt „Silbentrennungsoptionen“ aufgerufen werden. Nur wenn das geschieht, wird während der Aufzeichnung Code erzeugt; werden dagegen einfach nur die Häkchen bei „keine“, „automatisch“ oder „manuell“ gesetzt, entsteht kein Code.

Sub silbtrenn_ein()
'
' silbtrenn_ein Makro
'
'
  With ActiveDocument
      .AutoHyphenation = True
      .HyphenateCaps = True
      .ConsecutiveHyphensLimit = 0
  End With
End Sub

Suchen und Ersetzen von Schriftformatierungen

Das Problem bei VBA-Makros zu Suchen/Ersetzen ist, dass bestimmte Aktionen vom Makrorekorder nicht aufgezeichnet werden. Dazu gehören sämtliche Schriftformatierungen.

Beispiel: Suchen von tiefgestellten Zeichen, ersetzen mit Formatvorlage „tief“. Obwohl im Suchen/Ersetzen-Fenster bei der Makroaufzeichnung eingegeben wurde, dass nach tiefgestellten Zeichen gesucht werden soll, findet sich dazu im aufgezeichneten Makrolisting keine einzige Zeile. Cindy Meister spricht von einem echten Fehlverhalten von Word (S. 255)!

Aufgezeichnete Aktion:

Sub prueftief()
'
' prueftief Makro
' Makro aufgezeichnet am 20.01.2011 von walter
'
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  Selection.Find.Replacement.Style = ActiveDocument.Styles("tief")
  With Selection.Find
      .Text = ""
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub

D.h., man muss selbst die Anweisungen .Font, .Bold , .Subscript usw. eingeben. Kleine Hilfe: Im Dialogfeld des VB-Editors <Extras-Optionen-Editor> sollte das Kästchen „Elemente automatisch auflisten“ aktiviert sein. Dann schlägt Word eine Liste möglicher Befehle/Eigenschaften vor. Man muss lediglich den Punkt eingeben, und schon geht die Vorschlagsliste auf.

Auf diese Weise wurde im obigen Code die Zeile zum Suchen von tiefgestellten Zeichen (.Font.Subscript = True) ergänzt:

Sub prueftief2()
'
' prueftief2 Makro
' Makro aufgezeichnet am 20.01.2011 von walter
'
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  Selection.Find.Replacement.Style = ActiveDocument.Styles("tief")
  With Selection.Find
      .Text = ""
      .Font.Subscript = True
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Wichtig: das „= True“ wird nicht vorgeschlagen, aber anscheinend gibt es nur die „Attribute“ „True“ und „False“.

Dieses Makro läuft ganz prima.

Achtung: Wenn nicht ersetzt, sondern einfach nur gesucht werden soll, muss anscheinend anders vorgegangen werden:

Sub suchenachkursiv()
'
' suchenachkursiv Makro
'
'
  Selection.Find.ClearFormatting
  Selection.Find.Font.Italic = True
  With Selection.Find
      .Text = ""
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindAsk
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  Selection.Find.Execute
End Sub

Diese Kursiv-Finden-Makro ließ sich (in Word 2016) sogar aufzeichnen!

Es fällt auf, dass der Kursiv-Suchen-Befehl vor

With Selection.Find

steht.

Hervorhebung einer bestimmten Farbe suchen

Gesucht wird nach der Farbe der markierten Textstelle:

Sub nach_nächster_hervorhebung_gleicher_farbe_suchen()
Dim highl_col
highl_col = Selection.Range.HighlightColorIndex
  'MsgBox highl_col
Selection.Find.ClearFormatting
Selection.Find.Highlight = True
Selection.Find.Replacement.ClearFormatting
  With Selection.Find
      .Text = ""
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  Do
  Selection.Find.Execute
  Loop Until Selection.Range.HighlightColorIndex = highl_col
  Selection.Range.Select
  'Selection.Range.HighlightColorIndex = wdNoHighlight
  End With
End Sub

Es könnte auch ein ColorIndex eingegeben werden (entweder die Indexnummer der Farbe oder der Word-interne Name der Farbe).

Hervorhebungen einer bestimmten Farbe suchen und durch andere Farbe ersetzen

Sub hervor_farb_such()
'
' Makro zum Suchen einer bestimmten Hervorhebungsfarbe
'
'
  Dim kennungstext
  kennungstext = InputBox("Welcher Text soll als Kennung verwendet werden?", "Kennungstext")
  Selection.Find.ClearFormatting
  Selection.Find.Replacement.ClearFormatting
  With Selection.Find
      .text = ""
      .Replacement.text = ""
      .Forward = True
      .Wrap = wdFindAsk
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Highlight = True
  End With
  Selection.Find.Execute
  Do While Selection.Find.Found
  If Selection.Range.HighlightColorIndex = wdYellow Then
  Selection.Range.Select
  Selection.Range.HighlightColorIndex = wdNoHighlight
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.TypeText text:=kennungstext
  Else
      Selection.Find.Execute
  End If
  Loop
  MsgBox "Fertig"
End Sub

Der entscheidende Punkt ist, dass Word die Farbe eines Textstücks nur „auslesen“ kann, wenn das Textstück markiert („gehighlighted“) ist: HighlightColorIndex = wdYellow (für die Farbe Gelb)

Zunächst muss überhaupt nach Hervorhebungen (Highlights) gesucht werden:

.Highlight = True ((innerhalb der With-Schleife))

und Selection.Find.Execute nach der With-Schleife findet genau diese Stellen. Sie können aber irgendeine Farbe haben. Wie lässt sich eine bestimmte Farbe finden?

Dazu dient die Do-Schleife:

  Do While Selection.Find.Found
  If Selection.Range.HighlightColorIndex = wdYellow Then
  Selection.Range.Select
  Selection.Range.HighlightColorIndex = wdNoHighlight
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.TypeText text:=kennungstext
  Else
      Selection.Find.Execute
  End If
  Loop

Wenn eine beliebige Hervorhebung gefunden wurde (While Selection.Find.Found), kann Word deren Farbe auslesen. Nun wird geschaut, ob die Hervorhebung die Farbe wdYellow hat:

    If Selection.Range.HighlightColorIndex = wdYellow Then

Falls ja, markiere das Textstück als „gefunden“:

Selection.Range.Select

Dem markierten Textstück kann dann eine andere Farbe zugewiesen werden:

Selection.Range.HighlightColorIndex = wdNoHighlight

In diesem Fall ist es „NoHighlight“, also keine Farbe. Hier könnte aber auch eine andere Farbe stehen, z. B wdBlue für Blau.

Das heißt mit diesem Makro ist das erreicht, was sein sollte: Suche nach bestimmter Hervorhebung, ersetze sie durch eine andere.

Das Makro springt von einer gelben Hervorhebung zur nächsten. Alle andersfabigen werden übersprungen.

Soll bewusst nach einer anderen Farbe gesucht werden, braucht einfach nur an der Stelle Selection.Range.HighlightColorIndex = wdYellow der Name der Farbe geändert zu werden.

Ebenso ist es möglich, die Ersetzen-Farbe zu ändern (evtl. sogar dieselbe Farbe einzubauen wie die, nach der gescuth wurde).

In der Microsoft-Hilfe gibt es eine Tabelle mit allen Farbnamen:

https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa172829(v=office.11)

wdByAuthor; wdAuto; wdNoHighlight; wdBlack; wdBlue; wdBrightGreen; 
wdDarkBlue; wdDarkRed; wdDarkYellow; wdGray25; wdGray50; wdGreen; 
wdPink; wdRed; wdTeal; wdTurquoise; wdViolet; wdWhite; wdYellow

Das Makro enthält noch eine Besonderheit: Damit später auch unabhängig von einer Hervorhebungsfarbe nach den zuvor hervorgehobenen Stellen gesucht werden kann, wird die gefundene hervorgehobene Textstelle am Ende mit einer Kennung versehen, die außerhalb des Farbbereichs liegt:

  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.TypeText text:=kennungstext

Als „kennungstext“ wird das verwendet, was ganz am Anfang des Makros abgefragt wird:

  kennungstext = InputBox("Welcher Text soll als Kennung verwendet werden?", "Kennungstext")

Geeignet als Kennunsgstext ist z. B. “###„ oder “@@@„. Man könnte auch für jede Hervorhebungsfarbe einen anderen Kennungstext wählen.

Das einmal angelegte Makro kann kopiert und mehrfach in den VBA-Editor (wird mit Alt-F11 geöffnet) eingefügt werden. Bei jeder Instanz können der Makroname und die Namen der Suche-Farbe und der Ersetzen-Farbe geändert werden. Wegen des einfachen Zugriffs sollten sie auf das Menüband gelegt werden.

Suchen nach Text und Zuweisung von Formatvorlage

Man unterliegt zunächst der Versuchung, den Text zu suchen und durch sich selbst zu ersetzen, wobei beim Ersetzen die Formatvorlage zugewiesen wird. Doch das funktioniert nicht, weil manche Parameter nicht aufgezeichnet werden.

Prinzip:

  • Aufzeichnen des reinen Suchen-Makros. Gesucht wird z. B. nach dem Textmuster „Bild [0-9]{1;2}“; gefunden wird Bild 1 genauso wie Bild 25.
Sub bildverw()
'
' bild wird gesucht, um anschließend Formatvorlage zuzuweisen 
'
'
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = "(Bild [0-9]{1;2})"
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchAllWordForms = False
      .MatchSoundsLike = False
      .MatchWildcards = True
  End With
  Selection.Find.Execute
End Sub
  • Im aufgezeichneten Makro die folgenden zwei Zeilen ergänzen (gezeigt am Beispiel der Formatvorlage „Verweis“):
  Selection.Style = ActiveDocument.Styles("Verweis")
  Selection.MoveRight Unit:=wdCharacter, Count:=1

Mit der letzten Zeile wird die markierte (und formatierte) Textstelle verlassen, sodass das Makro anschließend erneut ausgeführt werden kann.

Gesamtmakro:

Sub bildverw()
'
' bild wird gesucht, um anschließend Formatvorlage zuzuweisen 
'
'
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = "(Bild [0-9]{1;2})"
      .Forward = True
      .Wrap = wdFindContinue
      .Format = True
      .MatchCase = False
      .MatchWholeWord = False
      .MatchAllWordForms = False
      .MatchSoundsLike = False
      .MatchWildcards = True
  End With
  Selection.Find.Execute
  Selection.Style = ActiveDocument.Styles("Verweis")
  Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub

Aufgepasst: Das vorstehende Beispiel gilt für das Zuweisen einer Zeichenformatvorlage. Soll eine Absatzformatvorlage zugewiesen werden, muss zunächst die Markierung, die durch das Finden entsteht, aufgehoben werden. Erst danach wird die Formatvorlage zugewiesen. Das heißt, im vorstehenden Beispiel sind die betreffenden Zeilen in ihrer Reihenfolge umzudrehen:

  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Selection.Style = ActiveDocument.Styles("Name der AFV")

Variablen: Suche nach markiertem Text

Problem: Wenn man Text (z.B. „die“) markiert und dann ein Makro aufzeichnet, in dem nach dem markierten Text gesucht wird, dann steht in dem aufgezeichneten Makro genau dieser Text drin:

Sub suchenachmarkiertemtext()
'
' suchenachmarkiertemtext Makro
'
  Selection.Copy
  Selection.HomeKey Unit:=wdStory
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = "die"
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindAsk
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  Selection.Find.Execute
End Sub

Der Suche-String ist eine Konstante. Was man möchte, ist ein Makro, mit dem nach dem jeweils markierten Text gesucht werden kann, d.h., der Suche-String muss eine Variable sein. Dazu muss mit der Funktion „Selection.Text“ gearbeitet werden, mit der sich eine Variable (z.B. „a“) deklarieren lässt:

Sub suchenachmarkiertemtext()
'
' suchenachmarkiertemtext Makro
'
  a = Selection.Text 'variable
  Selection.HomeKey Unit:=wdStory
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = a 'variable wird hier eingesetzt
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  Selection.Find.Execute
End Sub

Zu beachten: Mit diesem Makro wird lediglich das erste Auftreten des Text-Strings im Dokument gefunden. Will man weitersuchen, dann ganz normal per Strg-f das Suchenfenster geöffnet werden. Hier steht der Text-String bereits als Suchbegriff drin, sodass nur auf „Weitersuchen“ geklickt werden muss.

Variablen: Formatvorlagen aus fremder Dokumentvorlage in aktuelles Arbeitsdokument kopieren

Die Information, welches das aktuelle Arbeitsdokument ist (kompletter Pfadname), kann abgefragt werden (ActiveDocument.FullName). Sie wird in einer Variablen festgehalten. Als Quelldatei für die FV dient hier beispielhaft die Dokumentvorlage dokuform.dotm. Das Makro wurde aufgezeichnet und dann an der Stelle „Destination:=“ geändert. Wesentliches Element dabei ist das „Organisieren“-Fenster, das während der Aufzeichnung über die Registerkarte „Entwicklertools“ und das Dialogfenster „Dokumentvorlagen und Add-Ins“ aufgerufen wurde. Dann wurde im rechten Teilfenster die Dokuvorlage dokuform geöffnet. Die gewünschten FV wurden markiert und per Kopieren in die Datei im linken Teilfenster (also das aktuelle Arbeitsdokument) übertragen. Es wurden nur einige FV ausgewählt. In der Praxis muss man schauen, welche FV wirklich gebraucht werden. Natürlich können auch sämtliche FV der Quelldatei übertragen werden.

Für jede Dokumentvorlage, die als Quelldatei infrage kommt, kann ein entsprechendes Makro angelegt werden. Interessant wären z. B. „indexing.dotm“ und „vfll.dotm“.

Damit können „auf Knopfdruck“ die Fv unterschiedlicher Dokuvorlagen in das jeweilige Arbeitsdokument übertragen werden.

Sub fv_aus_dokuform()
'
' fv aus Dokumentvorlage dokuform in aktuelle Datei kopieren
'
'
Dim aktDat

aktDat = ActiveDocument.FullName

  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_fliess", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_aufzaehlung", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_aufzaehlung_manuell", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_ausblend1", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_ausblend2", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_bild", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_bu", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_bu_beginn", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_code_text", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\dokuform.dotm", Destination:= _
      aktDat _
      , Name:="df_code_text_zeichen", Object:=wdOrganizerObjectStyles
End Sub

Zum Beobachten des Kopiervorgangs am besten den FV-Aufgabenbereich öffnen und die Optionen auf „FV im aktuellen Dokument“ einstellen.

Variablen: Nutzung der Eingabe-Box

Gezeigt am Beispiel des Kopierens von FV aus einer anderen Datei („Quell-Datei“). Als Variable muss der Dateiname eingegeben werden.

In die aktuelle Datei („Arbeitsdokument“) sollen alle oder einige FV der Quell-Datei über das Organisieren-Fenster hereinkopiert werden. Als Quell-Datei soll beispielhaft die dokuform-Dokumentvorlage dienen. Das Kopieren der FV wird komplett aufgezeichnet. Dabei landet der Quell-Dateiname (in diesem Fall: „dokuform.dotm“) im Makrocode. Damit das Makro für beliebige Quell-Dateien eingesetzt werden kann, muss der jeweils aktuelle Quell-Dateiname eingegeben werden. Die Code-Zeilen für die Input-Box, über die die Namenseingabe erfolgt, müssen von Hand dem aufgezeichneten Code hinzugefügt werden. Außerdem ist die Variable manuell in die Kopierzeilen einzubauen.

Das Makro funktioniert nur für Quell-Dateien, die im selben Verzeichnis liegen.

Als Arbeitsdokument kann jede beliebige Word-Datei dienen. Das heißt, die FV werden immer aus der angegeben Quell-Datei in das jeweilige Arbeitsdokument hineinkopiert.

Das Makro kann so aussehen:

Sub fv_aus_beliebiger_dokuvorlage()
'
' FV werden aus Dokuvorlage geholt, deren Name eingegebn werden muss
' Voraussetzung: Quelldatei befindet immer im Standardverzeichnis der Dokuvorlagen (hier:
C:\vorlagen_arbeitsgruppe\)
'

Dim quelldatei
Dim aktDat

quelldatei = InputBox("Bitte Namen der Quelldatei (ohne Dateinamenerweiterung) eingeben.") 'Variable für Quell-Dateinamen
aktDat = ActiveDocument.FullName

  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_fliess", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_aufzaehlung", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_aufzaehlung_manuell", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_ausblend1", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_ausblend2", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_bild", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_bu", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_bu_beginn", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_code_text", Object:=wdOrganizerObjectStyles
  Application.OrganizerCopy Source:= _
      "C:\vorlagen_arbeitsgruppe\" & quelldatei & ".dotm", Destination:= _
      aktDat _
      , Name:="df_code_text_zeichen", Object:=wdOrganizerObjectStyles
End Sub

Zum Beobachten des Kopiervorgangs am besten den FV-Aufgabenbereich öffnen und die Optionen auf „FV im aktuellen Dokument“ einstellen.

Wenn markierter Text (siehe vorstehend) in eine Variable a gepackt wurde, können Funktionen darauf angewandt werden. Typische Textfunktionen sind

  • len(a) → Länge von a
  • left (a, [Zahl der Zeichen]) → Linksanteil von a

Man sollte meinen, dass auch der Rechtsanteil mit einer Funktion wie right(a, [Zahl der Zeichen]) herausgezogen werden kann. Doch das funktioniert aus irgendeinem Grund nicht. Die right-Funktion wird von VBA für Word nicht erkannt! In Excel dagegen scheint sie zu funktionieren.

Experimente zeigen, dass man mit der mid-Funktion weiterkommt:

  • mid (a, [Zahl der Zeichen]) liefert den Anteil von a ab der angegebenen Stelle bis zum Ende.

Wie sich zeigt, liefert z. B.

  • mid(a, len(a) - 1)

die letzten beiden Zeichen des Strings a.

Man könnte dann Kombinationen a aus dem Anfang und dem Ende von a bilden:

Wenn im Text z. B das Wort „Schlüsselkomponenten“ markiert wurde, ergibt sich

Sub anfang_ende()
  Dim a, b, c, d, e
  a = selection.text
  b = Len(a)
  c = left(a, 2) 'erste beide Zeichen von a, also 2 Zeichen von links
  d = Mid(a, b - 1) 'letzte beide Zeichen von a, also 2 Zeichen von rechts
  e = c & d 'Ergebnis
MsgBox e
End Sub

In der MsgBox wird dann angezeigt: „Scen“

Nutzen lässt sich das, um in Kombination mit dem nachfolgenden Gehezu-Makro von einem XE-Feld zum nächsten zu gehen, den jeweiligen Inhalt in die Variable a zu packen und dann mit dem Anfang-Ende-Makro automatisch vor dem XE-Feld eine Textmarke zu setzen, deren Name systematisch aufgebaut wird aus

  • „i_“ für „Index
  • der Seitenangabe
  • und dem berechneten Textwert

Wenn also das XE-Feld „Schlüsselkomponenten“ auf S. 24 erzeugt wurde, wäre der Name der Textmarke:

  • i_24Scen

Siehe weiter unten: „Textmarke erzeugen…“.

Kopieren in Zwischenablage und Herausholen aus Zwischenablage

von: https://wordmvp.com/FAQs/MacrosVBA/ManipulateClipboard.htm

Manipulating the clipboard using VBA

Article contributed by Jonathan West

Although VB6 has a Clipboard object which you can manipulate, Word VBA doesn't. This is how to clear the clipboard in VBA:

Dim MyData As DataObject

Set MyData = New DataObject MyData.SetText ““ MyData.PutInClipboard

This is how to get the text on the clipboard into a string variable:

Dim MyData As DataObject Dim strClip As String

Set MyData = New DataObject MyData.GetFromClipboard strClip = MyData.GetText

This is how to get the text from a string variable into the clipboard:

Dim MyData As DataObject Dim strClip As String strClip = „Hi there“

Set MyData = New DataObject

MyData.SetText strClip MyData.PutInClipboard

The DataObject object is a part of the Forms library in VBA. In order to make this code work, you must do one of two things.

  • Have at least one UserForm in your project, or
  • In the VBA editor, go to Tools, References, and set a reference to the „Microsoft Forms 2.0 Object Library“

Wichtig ist der letzte Punkt: Microsoft Forms! Im VBA-Fenster muss unter Extras der Punkt Verweise aufgerufen und dann das Häkchen bei Microsoft Forms gesetzt werden:

Eigenes Makro zum Holen aus Zwischenablage:

Sub aus_zwischenablage()
' Voraussetzung: vorher wurde Text per Copy in Zwischenablage gebracht
Dim myDO As DataObject
  Set myDO = New DataObject
  myDO.GetFromClipboard
  MsgBox myDO.GetText
End Sub

"Gehe zu" in Makro einbauen

Anstatt nach bestimmten Objekten (oder Elementen) zu suchen, kann man auch die GoTo-Funktion verwenden. Sie wird per Tastatur mit <Strg-g> oder F5 aufgerufen. Es geht ein Dialogfenster auf, in dem das gewünschte Element gewählt werden kann:

Um z.B. nach einem XE-Feld zu suchen, kann man das Gehezu-Fenster aufrufen, das Element „Feld“ wählen und den Feldnamen XE eintippen (oder aus einem Pulldown-Menü auswählen):

Bestätigen von „Weiter“ führt zum nächsten Vorkommen des XE-Feldes.

Diese Aktionen lassen sich genauso als Makro aufzeichnen. Heraus kommt folgender Code:

Sub xefeldsuchen()
'
'
  Selection.GoTo What:=wdGoToField, Which:=wdGoToNext, Count:=1, Name:="XE"
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = "und"
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
End Sub

Es fällt auf, dass nicht nur die Gehezu-Aktion aufgezeichnet wurde, sondern auch eine Suchen-Aktion. Weshalb das so ist, konnte ich bisher nicht herausfinden.

Im Suchen-Code steht, und das ist besonders bedenklich, der Suchentext drin, der bei der letzten Suche - die mit dem Gehezu überhaupt nichts zu tun hat - eingegeben wurde. Die Frage ist, ob der gesamte Suchen-Code nicht einfach gelöscht werden kann. Genau das geht. Das heißt, der Gehezu-Code reduziert sich zu:

Sub xefeldsuchen()
'
'
  Selection.GoTo What:=wdGoToField, Which:=wdGoToNext, Count:=1, Name:="XE"
End Sub

Das sieht natürlich viel besser aus.

Das Hingehen zu einem Feld (wie hier dem XE-Feld) lässt sich noch verbinden mit weiteren Aktionen, etwa einer Formatierung. Wenn z.B. XE-Felder aus Cindex in Word eingebaut werden, können sie eine falsche Schriftgröße haben. Die Standardschriftgröße eines Absatzes kann z.B. 10 pt sein, während die Schriftgröße aus Cindex 12 pt ist. Um das zu bereinigen, kann mit einem Makro von einem XE-Feld zum nächsten gesprungen und per <Strg-Leertaste> die Standardschrift zugewiesen werden; vor dem Zuweisen muss das Feld noch per <Strg-Umsch-Pfeil nach rechts> markiert werden.

Der zur Formatierung gehörende Code (der ebenfalls einfach aufgezeichnet werden kann), lautet:

  Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
  Selection.Font.Reset
  Selection.MoveRight Unit:=wdCharacter, Count:=1 

Das Gesamtmakro zum Suchen des nächsten XE-Feldes und Zuweisen der korrekten Schriftgröße wäre somit:

Sub xefeld_in_normalschrift()
'
'
  Selection.GoTo What:=wdGoToField, Which:=wdGoToNext, Count:=1, Name:="XE"
  Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
  Selection.Font.Reset
  Selection.MoveRight Unit:=wdCharacter, Count:=1 
End Sub

Nach der Aktion steht der Cursor rechts vom XE-Feld und die Markierung ist aufgehoben, sodass nach dem nächsten XE-Feld gesprungen werden kann.

Damit könnte man per Mausklick auf das Makro (Button im Menüband oder auf Schnellzugriffsleiste) das gesamt Dokument durchsteppen.

Suchen nach Textrahmen und Markieren des enthaltenen Texts

Sub SearchTextBox()
' Makro von Allen Wyatt 2018
  Dim shp As Shape
  Dim sTemp As String
  Dim iAnswer As Integer
  For Each shp In ActiveDocument.Shapes
      If shp.Type = msoTextBox Then
          shp.Select
          Selection.ShapeRange.TextFrame.TextRange.Select
          sTemp = Selection.Text
          sTemp = Left(sTemp, 1000)
          iAnswer = MsgBox("Box contains text beginning with:" & vbCrLf _
            & sTemp & vbCrLf & "Stop here?", vbYesNo, "Located Text Box")
          If iAnswer = vbYes Then Exit For
      End If
  Next
End Sub

Hier ist der zu markierende Bereich auf 1000 Buchstaben eingestellt. Das ist aber nicht als einzig gültige Zahl gemeint, sondern als Obergrenze. Das heißt, auch wenn nur drei Buchstaben enthalten sind, stürzt das Makro nicht ab. Falls es Textrahmen mit mehr Buchstaben gibt, müsste die Obergrenze angepasst werden.

Textrahmen in normalen Text umwandeln

Sub ConvertTextboxText()
' Makro von Allen Wyatt 2018
  Dim shp As Shape
  Dim oRngAnchor As Range
  Dim sTemp As String
  Dim J As Long
  For J = ActiveDocument.Shapes.Count To 1 Step -1
      Set shp = ActiveDocument.Shapes(J)
      If shp.Type = msoTextBox Then
          sTemp = shp.TextFrame.TextRange.Text
          If Len(sTemp) > 1 Then
              Set oRngAnchor = shp.Anchor.Paragraphs(1).Range
              sTemp = Left(sTemp, Len(sTemp) - 1)
              oRngAnchor.InsertBefore "[[ " & sTemp & " ]]"
          End If
          shp.Delete
      End If
  Next J
End Sub

Damit werden sämtliche Textrahmen in einem Dokument der Reihe nach gesucht, ihr Textinhalt wird herauskopiert und vor dem Textrahmen in das Dokument eingefügt (dabei mit doppelten eckigen Klammern umgeben), und anschließend wird der Textrahmen gelöscht.

Informationen zum Text oder Dokument abfragen

a) gesamtes Dokument:

  • ActiveDocument.Paragraphs.Count
  • ActiveDocument.Endnotes.Count
  • ActiveDocument.Footnotes.Count
  • ActiveDocument.Fields.Count
  • ActiveDocument.Shapes.Count
  • ActiveDocument.Comments.Count
  • ActiveDocument.Words.Count
  • ActiveDocument.Sentences.Count
  • Word.Documents.Count
  • ActiveDocument.OMaths.Count
  • ActiveDocument.InlineShapes.Count
  • ActiveDocument.FullName (liefert den kompletten Pfad)

b) markierter Bereich:

Alles mit Selection.Range anstelle von ActiveDocument, wenn in markiertem Bereich gezählt werden soll, also z.B.

Selection.Range.Paragraphs.Count

Aktuelle Seitenzahl

von WordTipsNet:

zwei Möglichkeiten:

CurPage = Selection.Information(wdActiveEndAdjustedPageNumber)

oder

CurPage = Selection.Information(wdActiveEndPageNumber)

Die erste Variante holt die „logisch“ richtige Seitenzahl, wenn also die erste Seite auf einen Wert größer als 1 gesetzt wurde, die zweite liefert die „physikalisch“ richtige.

Variablen und Anzeige der Information

Es können Variablen definiert werden, mit denen sich dann einfach weitermachen lässt, z.B.:

a = Selection.Range.Paragraphs.Count

Dann könnte es im Makrocode weiter heißen:

MsgBox a

Damit würde die Zahl der Absätze in der Selektion angezeigt werden.

Einfügen der Information in Text

Möchte man die jeweilige Zahl in das Dokument an der Stelle einfügen, an der der Cursor blinkt oder die markiert ist:

Selection.TypeText Text:= a

Der Text im Dokument könnte dann lauten:

„Der markierte Bereich enthält 5 Absätze“

falls der Cursor zwischen „enthält“ und „Absätze“ stand und die Variable a im vorhergehenden Makro den Wert 5 erhalten hatte.

Information über den Word-internen Namen eines Menübefehls erhalten

mit

  • <Strg-Alt-+> (Pluszeichen auf Nummernblock)

wird Word in einen anderen Modus umgeschaltet, in dem der Cursor wie ein Schmetterling aussieht.

Klickt man nun auf einen Menübefehl, geht das Fenster „Tastatur anpassen“ auf und der Name des Befehls wird markiert. Leider kann er nicht einfach kopiert werden, aber er lässt sich abschreiben und anschließend in einem Makro verwenden.

Ein- und Ausschalten der Anzeige der nichtdruckbaren Zeichen; Überprüfung mit If-Abfrage

Sub nichtdr_aus()
'
' nichtdruckbare Zeichen ausschalten
'
'
  Dim a As Long
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  a = MsgBox("Sind die Absatzmarken zu sehen?", vbYesNo)
  'wenn die Antwort "nein" lautet, ergibt sich der Wert 7; bei "ja" ergibt sich 6
  If a = "6" Then
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  End If
End Sub
Sub nichtdr_ein()
'
' nichtdruckbare Zeichen einschalten
'
'
  Dim a As Long
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  a = MsgBox("Sind die Absatzmarken zu sehen?", vbYesNo)
  'wenn die Antwort "nein" lautet, ergibt sich der Wert 7; bei "ja" ergibt sich 6
  If a = "7" Then
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  End If
End Sub

Die Befehle für ein- und ausschalten sind identisch, daher muss abgefragt werden, ob die Absatzmarken zu sehen sind. Die Msg-Box erhält zwei Schalter: „ja“ und „nein“ (vbYesNo). Was angeklickt wurde, kann über die Variable a festgehalten werden. Es scheint so zu sein, dass die Antwort „ja“ dem, Wert 6, die Antwort „nein“ dem Wert 7 entspricht.

Feldsyntax-Anzeige an- und ausschalten; Überprüfung mit If-Abfrage

Sub feldsyntax_aus() 
'
' feldsyntax ausschalten
'
'
  Dim a As Long
  ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
  a = MsgBox("Ist die Feldsyntax zu sehen?", vbYesNo)
  'wenn die Antwort "nein" lautet, ergibt sich der Wert 7; bei "ja" ergibt sich 6
  If a = "6" Then
  ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
  End If
End Sub
Sub feldsyntax_ein()
'
' feldsyntax einschalten
'
'
  Dim a As Long
  ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
  a = MsgBox("Ist die Feldsyntax zu sehen?", vbYesNo)
  'wenn die Antwort "nein" lautet, ergibt sich der Wert 7; bei "ja" ergibt sich 6
  If a = "7" Then
  ActiveWindow.View.ShowFieldCodes = Not ActiveWindow.View.ShowFieldCodes
  End If
End Sub

Dialogfenster öffnen

Das Öffnen von Dialogfenstern kann nicht aufgezeichnet werden.

Syntax zum Öffnen:

  • Dialogs(<hier Name des Dialogfensters>).Display

Die runden Klammern müssen hingeschrieben werden.

Beispiel:

Sub suchenfenster_oeffnen()
'
' Suchenfenster aufrufen
'
'
  Dialogs(wdDialogEditFind).Display
End Sub

Weitere interessante Dialogfelder, zu deren Öffnen es kein Standard-Tastenkürzel gibt:

Bezeichnung des FenstersWord-interner Dialogfenster-Name
Absatzformat-FensterwdDialogFormatParagraph
Einfügen - Text aus DateiwdDialogInsertFile
Einfügen - Bild einfügen aus - Dieses Gerät wdDialogInsertPicture
Einfügen - Tabelle einfügen wdDialogTableInsertTable
Layout - Seite einrichten wdDialogFilePageSetup
Layout - Silbentrennung wdDialogToolsHyphenation

Springe zu letzter Cursorposition

Situation: Cursor befindet sich gerade an einer bestimmten Stelle und man möchte ein paar Seiten weiter etwas nachschauen und anschließend wieder zur Ausgangsposition zurückgehen.

Problem: Zumindest bei den neueren Word-Versionen (2016 und neuer) wird der Cursor beim Blättern durch das Dokument mitgenommen. Selbst, wenn die Option „Einfügemarke mit Bildlauf verschieben“ nicht gesetzt ist, wird der Cursor mitgenommen. Das Problem lässt sich nur mit Makros lösen:

  • Makro 1: Setzen einer Textmarke, die als Zielanker dienen kann
  • Makro 2: Sprung zur Textmarke

Gut ist, dass ein und derselbe Textmarkenname überall eingesetzt werden kann. Denn sobald eine Textmarke mit demselben Namen an einer Stelle eingefügt wird, wird sie an anderer Stelle gelöscht. Der Name der Textmarke könnte z. B. „sprung“ lauten.

Makro1:

Sub sprungmarke()
'
' sprungmarke setzen an cursorposition
'
'
  With ActiveDocument.Bookmarks
      .Add Range:=Selection.Range, Name:="sprung"
      .DefaultSorting = wdSortByName
      .ShowHidden = True
  End With
End Sub

Makro 2:

Sub sprung_zurueck()
'
' sprung_zurueck Makro
'
'
  Selection.GoTo What:=wdGoToBookmark, Name:="sprung"
  With ActiveDocument.Bookmarks
      .DefaultSorting = wdSortByName
      .ShowHidden = True
  End With
End Sub

Den Makros sollten Tastenkürzel zugewiesen oder sie sollten als Schaltflächen auf dem Menüband platziert werden.

Gehe zu Dokumentanfang

Sub gehezu_dokumentanfang()
  Selection.HomeKey Unit:=wdStory
End Sub

Gehe eine Seite weiter

Sub eine_seite_weiter()
  Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
End Sub

Es gibt kein Tastenkürzel für „eine Seite weiter“, daher muss die Gehe-zu-Funktion genommen werden.

Seitenende markieren durch Einfügen eines Codes

Sub seitenende_mark()
'
' seitenende_mark. Geht ans Seitenende und fügt den Text <END> ein. Vor dem Start des Makros muss die Anzeige der nichtdruckbaren Zeichen ausgeschaltet sein.
'
  Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:=""
  'Jetzt muss die Anzeige der nichtdruckbaren Zeichen eingeschaltet werden, damit der Cursor nach dem Zurückgehen um einen Buchstaben //hinter// evtl. vorhandenem ausgeblendet formatiertem Text steht. 
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  Selection.MoveLeft Unit:=wdCharacter, Count:=1
  Selection.TypeText Text:="<END>"
  Selection.MoveLeft Unit:=wdCharacter, Count:=5, Extend:=wdExtend
  With Selection.Font
      .Hidden = True
      .Color = wdColorRed
  End With
  'Jetzt muss die Anzeige der nichtdruckbaren Zeichen wieder ausgeschaltet werden, damit der Cursor am Ende der tatsächlichen Seite steht. 
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  Selection.MoveDown Unit:=wdLine, Count:=1
End Sub

Schleife:

Sub seitenende_mark_schleife()
  Dim a
  Selection.EndKey Unit:=wdStory
  Selection.MoveLeft Unit:=wdCharacter, Count:=1
  a = Selection.Information(wdActiveEndPageNumber)
  'jetzt ist die Zahl der Seiten bekannt
  'die Schleife soll bis a - 1 laufen, und zwar vom Anfang des Dokumentes an
  Selection.HomeKey Unit:=wdStory
  For i = 1 To a - 1
  Application.Run MacroName:="seitenende_mark"
  Next i
  'Jetzt wird noch auf der letzten Seite die Seitenmarkierung gesetzt
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  Selection.EndKey Unit:=wdStory
  Selection.MoveLeft Unit:=wdCharacter, Count:=1
  Selection.TypeText Text:="<END>"
  Selection.MoveLeft Unit:=wdCharacter, Count:=5, Extend:=wdExtend
  With Selection.Font
      .Hidden = True
      .Color = wdColorRed
  End With
  ActiveWindow.ActivePane.View.ShowAll = Not ActiveWindow.ActivePane.View. _
      ShowAll
  Selection.HomeKey Unit:=wdStory
End Sub

Sinn der <END>-Markierung

Diese Kennung kann z. B. verwendet werden, um manuelle Seitenumbrüche einzubauen. Das könnte einfach per Suchen/Ersetzen geschehen: Suche nach <END>, ersetze durch manuellen Seitenumbruch. Eine andere Verwendung findet die Markierung im Manipulieren der XML-Daten einer Word-Datei. in der Datei word.xml sin d z.B. bei Tabellen keine Seiteninformationen zu finden. Das heißt, wenn eine Tabelle von einer Seite zur anderen geht, ist nicht klar, welcher Teil auf Seite a, welcher auf Seite b ist. Die <END>-Markierung wird mit dem obigen Makro aber überall eingebaut, auch in Tabellen. Das heißt, nun liegt die benötigte Information auch in word.xml vor. Das ist z. B. nützlich, um die XE-Felder mit zugeordneten Seitenzahlen aus der word.xml herauszuholen.

Achtung: in Tabellen lassen sich manuelle Seitenumbrüche nicht an beliebigen Stellen einbauen. Das gezielte Einbau eines manuellen Seitenumbruchs mitten in einer Zelle funktioniert nicht wie gedacht: Es wird immer die komplette Zelle verschoben. Auch die Methode „Seitenumbruch oberhalb“ in den Absatzeinstellungen funktioniert nicht. Das heißt, Tabellenumbrüche sind immer von Hand anzupassen. Der Einbau der <END>-Markierung klappt aber, sodass eine Verarbeitung der xml-Daten möglich ist.

Aufrufen eines anderen Makros aus einem Makro heraus

Das geht mit Application.Run MacroName:=„<Name des anderen Makros>“

Beispiel:

Sub seitenzahl_nach_vorn_schleife()
'
' seitenzahl_nach_vorn_schleife
'
'
Dim absatz As Paragraph
Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdLine, Count:=1
For Each absatz In ActiveDocument.Paragraphs
  Application.Run MacroName:="seitenzahl_nach_vorn"
Next absatz
'hier erscheint am ende eine Fehlermeldung, die einfach durch "Beenden" weggeklickt werden kann
' danach kann sortiert werden
End Sub

Hier wird das Makro seitenzahl_nach_vorn aufgerufen.

Makro-Schleifen

demonstriert am Beispiel eines Suchen-Makros, das nach dem Finden eines Textstrings bestimmte Aktionen vornehmen soll (Markierung erweitern und den markierten Text löschen), hier mit einer While … Wend-Schleife:

  Sub textaufbereiten01()
'
' textaufbereiten Makro
'
'
  Selection.Find.ClearFormatting
  With Selection.Find
      .Text = "<"    
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindAsk
      .Format = False
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
  End With
  While Selection.Find.Execute
      Selection.Extend
      Selection.Extend Character:=">"
      Selection.EscapeKey
      Selection.TypeBackspace
  Wend
  MsgBox "Alle Tags entfernt", vbOKOnly
  End Sub  

Wichtig ist hier, dass die Suche zunächst als Makro aufgezeichnet werden kann. Anschließend braucht man nur die Execute-Methode sowie die nachfolgenden Textänderungsbefehle mit einer While-Schleife zu umgeben (Beginn: While, Ende: Wend). Die Message-Box kann auch weggelassen werden.

Ende der While-Wend-Schleife

Zeichnet man einen Suchen-Vorgang auf, so steht der Suchbereich standardmäßig auf „Gesamt“. Der zugehörige Makrocode besteht aus zwei Zeilen, er lautet:

.Forward = True  
.Wrap= wdFindContinue

Stellt man den Bereich auf „Nach unten“ ein, so heißt der Code

.Forward = True
.Wrap = wdFindAsk

und entsprechend bei „Nach oben“:

.Forward = False
.Wrap = wdFindAsk

Die Gesamt-Suche zeichnet sich dadurch aus, dass sowohl .Forward auf „True“ steht als auch .Wrap auf „wdFindContinue“, während bei Suche „Nach unten“ aus „.Wrap = wdFindContinue“ ein „.Wrap = wdFindAsk“ wird. Bei Suche „Nach oben“ wird zusätzlich aus „.Forward = True“ ein „.Forward = False“.

„.Wrap = wdFindAsk“ bedeutet, dass Word fragt, ob es weitermachen soll, wenn es das Ende bzw. den Anfang des Dokuments erreicht hat. Wenn man dann einfach mit „Nein“ antwortet, wird das Makro beendet.

Um ein Beenden des Makros zu erreichen, ohne gefragt zu werden, muss der Makrocode in

.Wrap = wdFindStop 

geändert werden. Dieses Beenden kann nicht aufgezeichnet werden, sondern man muss den Code manuell eingeben.

Für das Ende der Schleife müssen nur dann keine besonderen Parameter vorgegeben werden, wenn klar ist, dass nach einem einmaligem Durchlauf keine Fundstellen mehr vorhanden sind. Lautet der Code

.Forward = True  
.Wrap= wdFindContinue

läuft Word grundsätzlich so lange weiter, bis das Suchmuster nicht mehr auftritt. Das heißt, die Schleife wird so oft durchlaufen, bis es nichts mehr zu tun gibt.

Do- und For-Each-Schleifen

Weitere mögliche Schleifentypen sind:

  • Do … While
  • Do … Until
  • For Each <element of collection> in <collection> … Next <element of collection>

Beispiel:

For Each absatz in ActiveDocument.Paragraphs
<mache dies oder jenes>
Next absatz

Dabei ist "absatz" eine Variable, die vor der Schleife deklariert werden muss.
ActiveDocument.Paragraphs ist die Ansammlung aller Absätze im Dokument.


Die Deklaration lautet wie folgt: 
Dim absatz As Paragraph

For-Each…Next-Schleifen hören von selbst auf, wenn das letzte Element der Sammlung bearbeitet worden ist.

Näheres z. B. bei https://www.youtube.com/watch?v=db0MVX-GUg4

Beispiele für For-Schleifen

a) In einer Zeile, in der eine Nummer am Ende steht, die Nummer an den Anfang der Zeile verschieben:

Sub seitenzahl_nach_vorn()
'
' seitenzahl_nach_vorn Makro
'
'
    Selection.EndKey Unit:=wdLine
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = ", "
        .Replacement.Text = ""
        .Forward = False
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.Extend
    Selection.Extend Character:=Chr(13)
    Selection.EscapeKey
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Cut
    Selection.HomeKey Unit:=wdLine
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    Selection.TypeText Text:="| "
    Selection.MoveDown Unit:=wdLine, Count:=1
End Sub

zugehörige Schleife (For Each … Next) für gesamtes Dokument (wenn das Dokument z.B. ein Register enthält), wobei das vorstehende Makro innerhalb der Schleife aufgerufen wird (Application.Run MacroName):

Sub seitenzahl_nach_vorn_schleife()
'
' seitenzahl_nach_vorn_schleife
'
'
Dim absatz As Paragraph
Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdLine, Count:=1
For Each absatz In ActiveDocument.Paragraphs
    Application.Run MacroName:="seitenzahl_nach_vorn"
Next absatz
'hier erscheint am ende eine Fehlermeldung, die einfach durch "Beenden" weggeklickt werden kann
' danach kann sortiert werden
End Sub

Die nächste Schleife macht dasselbe, aber mit For…Next und Zähler:

Sub seitenzahl_nach_vorn_schleife_02()
'
' seitenzahl_nach_vorn_schleife mit For...Next und Zähler
'
'
Dim i
totParas = ActiveDocument.Paragraphs.Count
Selection.HomeKey Unit:=wdStory
Selection.MoveDown Unit:=wdLine, Count:=1
For i = 2 To (totParas - 1)
    Application.Run MacroName:="seitenzahl_nach_vorn"
Next i
End Sub

b) Mit der Gehezu-Funktion zum nächsten XE-Feld springen und Schriftgröße zuweisen:

Das einzelne Makro wird oben beschrieben. Eine Schleife auf der Basis von For Each … Next bietet sich an, weil man sich keine Gedanken machen muss, wie viele Felder im Dokument vorkommen; vielmehr hört die Schleife nach dem letzten Vorkommnis einfach auf.

Sub xefeld_normalschrift_schleife()
'
'
  Dim feld As Field
  For Each feld In ActiveDocument.Fields
  Selection.GoTo What:=wdGoToField, Which:=wdGoToNext, Count:=1, Name:="xe"
  Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
  Selection.Font.Reset
  Selection.MoveRight Unit:=wdCharacter, Count:=1
  Next feld
End Sub

Hier ist ActiveDocument.Fields die Menge aller Felder im Dokument.

Makro-Schleife abbrechen

geht mit <Strg-Pause>; muss evtl. etwas länger gehalten werden

Fehlermeldung "Ausführung des Codes wurde unterbrochen"

  • Der Grund für die Fehlermeldung scheint zu sein, dass VBA eine Art Cache verwendet, in dem Code-Bruchstücke gespeichert werden, die beim Ausführen von weiterem Code stören.
    • Daher kann es helfen, diesen Cache zu löschen: Dazu <Strg-Pause>, wenn gerade kein Makro läuft.
  • Wichtig: zunächst im VBA-Editor die Ausführung des aktuellen Makros zurücksetzen, also auf das blaue Quadrat in der Symbolleiste klicken; damit wird sichergestellt, dass kein Makro mehr läuft.

Textmarke erzeugen, deren Name aus Markierung gewonnen wird

Sub textmarke_aus_markierung_variabel()
'
' Aufpassen: Markierung darf nur Zeichen enthalten, die in Textmarkennamen erlaubt sind!
' Textmarke wird vor dem Text erzeugt
'
  a = Selection.Text
  Selection.MoveLeft Unit:=wdCharacter, Count:=1
  With ActiveDocument.Bookmarks
      .Add Range:=Selection.Range, Name:=a
      .DefaultSorting = wdSortByName
      .ShowHidden = False
  End With
End Sub

Weiter oben unter „Berechnungen mit variablem Text“ wird gezeigt, wie auf markierten Text Textfunktionen angewandt werden können. Das kann man nutzen, um Textmarkennamen systematisch zu vergeben.

Der Name soll z. B. aufgebaut sein aus:

  • „i_“ für „Index
  • der Seitenangabe
  • und dem berechneten Textwert

Wenn also das XE-Feld „Schlüsselkomponenten“ auf S. 24 erzeugt wurde, wäre der Name der Textmarke:

  • i_24Scen

Das Makro muss zum XE-Feld gehen (siehe dazu nächsten Abschnitt), den Inhalt des Feldes markieren und auf Basis der Markierung und der Anwendung von Textfunktionen die Textmarke vor dem XE-Feld erzeugen.

Die Seitenzahl wird mit

s = Selection.Information(wdActiveEndAdjustedPageNumber)

geholt.

Sub textmarke_aus_markierung_systematisch()
'
' Aufpassen: Markierung darf nur Zeichen enthalten, die in Textmarkennamen erlaubt sind!
' Textmarke wird vor dem Text erzeugt
'
  Dim a, b, c, d, e, f, s
  a = Selection.Text
  b = Len(a)
  c = left(a, 2) 'erste beide Zeichen von a, also 2 Zeichen von links
  d = Mid(a, b - 1) 'letzte beide Zeichen von a, also 2 Zeichen von rechts
  e = c & d
  s = Selection.Information(wdActiveEndAdjustedPageNumber)
  f = "i_" & s & e
  Selection.MoveLeft Unit:=wdCharacter, Count:=7 'bei einem XE-Feld sind es 7 Zeichen, die nach links gegangen werden müssen, wenn der Textinhalt markiert ist 
  With ActiveDocument.Bookmarks
      .Add Range:=Selection.Range, Name:=f
      .DefaultSorting = wdSortByName
      .ShowHidden = False
  End With
End Sub
  • Voraussetzung: es wurde eine Textmarke als Linkziel gesetzt
  • gegeben: eine Textmarke, deren Name sich aus erlaubten Zeichen zusammensetzt (das sind alle Buchstaben, Zahlen und der Underscore), also z.B. „t52“ oder „_abc“:
  • Wichtig: das erste Zeichen muss ein Buchstabe oder _ sein (d.h., eine Zahl geht nicht als erstes Zeichen)

Fall a: Querverweis einer Seitenzahl (in einem Index oder einem IHV) zur entsprechenden Seitenzahl im Text

Für diesen Fall ist es gut, mit Textmarkennamen zu arbeiten, die aus einem Buchstaben gefolgt von einer Zahl bestehen, und zwar werden die Textmarken auf jeder Seite des Dokuments eingebaut: z.B. auf Seite 52 die Textmarke „t52“, auf Seite 117 die Textmarke „t117“ usw. Vorgehen bei Verlinkung:

  • man markiert die Zahl im Text (also im Index oder IHV), dann soll der Inhalt der Markierung per Makro genommen werden und als Variable in die VBA-Syntax für einen Querweis auf die entsprechende Textmarke eingebaut werden:
Sub link01()
'
' link01 Makro
'
'
  r = "t" + Selection.Text
  Selection.InsertCrossReference ReferenceType:="Textmarke", ReferenceKind:= _
      wdContentText, ReferenceItem:=r, InsertAsHyperlink:=True, _
      IncludePosition:=False, SeparateNumbers:=False, SeparatorString:=" "
End Sub

Liegt unter der Textmarkierung der Text „52“, dann würde also die Variable r besetzt mit „t52“; und bei

 
ReferenceItem:=r,

würde somit „t52“ als Name der Textmarke eingefügt.

Innerhalb des Word-Dokuments wäre das OK, die Querverweise werden auch in ein PDF übertragen. Für ein E-Book reicht es allerdings nicht, denn in E-Books funktionieren die aus Word kommenden Querverweise nicht. Man muss zu Hyperlinks greifen.

Da es in E-Books keine Seiten gibt und die Seitenzahlen der Printversion keinen Sinn mehr haben, muss mit Absatznummern gearbeitet werden. Das heißt, jeder Absatz des Dokuments, der einen „Informationsbereich“ eröffnet (vgl. Chicago Manual of Style), wird mit einer Nummer versehen. Aus der Nummer (die auch publiziert wird) muss (am besten per Makro) eine Textmarke erzeugt werden, die am besten direkt vor der Nummer am blinkenden Cursor eingebaut wird (sie umfasst also keinen Text). Der Textmarkenname darf wieder nur aus erlaubten Zeichen bestehen, d.h. insbesondere, dass er nicht mit einer Zahl beginnen darf. Die Erzeugung der Textmarke ist ein Thema für sich (vgl. Evernote). Angenommen, ein solcher Name lautet a1_5z, und im Index möchte man vom Locator a1_5z auf diese Textmarke verlinken. Vorgehen:

  • Markieren des Locators und kopieren
  • Einbauen des Hyperlinkfeldes (legt sich über den markierten Text)
  • im Dialogfenster des Feldes auf „Feldfunktionen“ gehen und dann hinter dem Namen HYPERLINK zunächst den Schalter \l für das aktuelle Dokument und dann den Inhalt der Zwischenablage zwischen Anführungszeichen einfügen, also z.B. HYPERLINK \l „a1_5z“
  • OK

Damit ist der Link erzeugt.

Das vostehend beschriebene Vorgehen funktioniert manuell. Zeichnet man die Schritte als Makro auf, hat man Problem, dass im Makro genau der erste kopierte Text als konstanter Wert im Makro steht. Was benötigt wird, ist aber ein variabler Textwert, nämlich immer der Textinhalt, der gerade markiert ist. Tests haben ergeben, dass man nicht mit dem Hyperlink-Feld arbeiten darf, sondern die Hyperlinkfunktion nehmen muss. Bei der kann man beim Aufzeichnen zwar nur manuell eine ganz bestimmte Textmarke auswählen, aber im Makrocode lässt sich der Textmarkenwert flexibel einstellen. Der Makrocode lautet dann:

Sub hyperlink_variabel_erzeugen()
  a = Selection.Text
  ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", _
      SubAddress:=a, ScreenTip:="", TextToDisplay:=a
End Sub   

Die Verlinkung geschieht dann, indem man im Index den Locator markiert und das Makro auslöst. Das war's auch schon!

Die zu publizierenden Absatznummern könnten übrigens, fall erwünscht, per Suchen/Ersetzen noch in eine andere Form gebracht werden, z.B. könnte aus a1_5z der Ausdruck [1.5] oder einfach 1.5 werden und entsprechend bei den anderen Nummern. Am besten erledigt man das über die gesamte Datei (einschließlich Index) hinweg per Mustersuche. Die Links werden dadurch nicht verändert!
<hi>Das Gute: Hyperlinks werden von Word an HTML weitergereicht und von dort an EPUB!</hi>
D.h. aber: Per Verlinkung ist ein EPUB-Index erzeugbar, der vom äußeren Format genauso aussieht wie ein Print-Index (was Einzüge angeht und vor allem das Vorhandensein von Locators). Die ansonsten üblichen EPUB-Indexe, die mit den in den EPUB-Programmen (z.B. Jutoh und Sigil) vorhandenen Index-Funktionen erzeugt werden, besitzen keine Locators!

Näheres zur Übergabe von Indexmarken und Indexen aus Word an EPUB ist hier zu erfahren: Indexdaten aus Word an EPUB

Siehe auch Index mit Hyperlinks

Löschen versteckter Textmarken

Will man HTML für die Weiterverarbeitung Richtung E-Book erzeugen, empfiehlt es sich, die versteckten Textmarken, die Word während der IHV-Erzeugung automatisch bei Überschriften einbaut, rauszuwerfen. Dazu kann das folgende Makro dienen, das aus dem Forum „https://windowssecrets.com/“ stammt:

Sub DeleteHiddenBookmarks()
  Dim i As Long
  ActiveDocument.Bookmarks.ShowHidden = True
  For i = ActiveDocument.Bookmarks.Count To 1 Step -1
  If Left$(ActiveDocument.Bookmarks(i).Name, 4) = "_Toc" Then
    ActiveDocument.Bookmarks(i).Delete
  End If
  Application.ActiveDocument.UndoClear
  Next i
  ActiveDocument.Bookmarks.ShowHidden = False
End Sub 

Spike-Funktion

Manchmal möchte man einen Text durchgehen um bestimmte Wörter oder einfach nur Textstrings der Reihe nach markieren und sammeln, um die gesammelte Liste an anderer Stelle verwenden zu können.

Dazu sind zwei Methoden einsetzbar:

  • Markierung mit Strg-Taste: man markiert die jeweiligen Textstellen mit der Maus und hält gleichzeitig die Strg-Taste gedrückt; auf diese Weise bleibt eine Textstelle markiert, wenn die nächste markiert wird; das Gute: die Textstellen sind voneinander unabhängig und können weit voneinander entfernt liegen; im Grunde läuft das auf das Sammeln von Textstellen hinaus; zum Schluss wird die Sammlung per <Strg-c> kopiert und landet in der Zwischenablage, von wo aus sie an an einer Stelle der Wahl eingefügt werden kann. Ergebnis: eine Liste der gesammelten Textstellen, in der sich jede Textstelle in einem eigenen Absatz befindet. Nachteil: man muss höllisch aufpassen, dass beim Markieren immer die Strg-Taste mitgedrückt ist; vergisst man das einmal, gehen alle vorher markierten Textstellen verloren.
  • Nutzen der Spike-Funktion: dabei wird die Sammlung durch „Aufspießen“ erzeugt und als Autotext abgelegt (siehe nachstehend).

Die Spike-Funktion wird per <Strg-F3> aufgerufen. Das heißt: Begriff markieren, dann <Strg-F3> betätigen. Man geht den Text von vorn bis hinten durch und jedes Mal, wenn man auf eine zu sammelnde Textstelle trifft, wird diese markiert und aufgespießt (und automatisch in die Autotextsammlung eingefügt). Im Vergleich zum obigen Markierungsverfahren hat die Spike-Funktion den Vorteil, dass das Sammeln jederzeit unterbrochen und später fortgesetzt werden kann. Solange man eine Sammlung (also den Autotext) nicht verwendet, bleibt sie erhalten und kann „aufgestockt“ werden.

Die Spike-Funktion in ihrer Originalversion hat allerdings einen Haken: Der markierte Text wird ausgeschnitten. Das soll meistens aber nicht sein. Möchte man nur kopieren und sammeln, nicht aber ausschneiden und sammeln, muss ein Makro verwendet werden, mit dessen Hilfe ein reiner Kopiervorgang ausgelöst wird. Das Makro lässt sich nur teilweise aufzeichnen, weswegen ich auf eine Idee von Paul Beverley zurückgreife (zu finden auf seiner Website: http://www.archivepub.co.uk/book.html). Er schlägt folgenden Code für SpikeCopy vor:

Sub SpikeCopy()
  'Paul Beverley Version 26.02.11
  'Copy to spike
NormalTemplate.AutoTextEntries.AppendToSpike Range:=Selection.Range
WordBasic.EditUnDo
End Sub

Das Besondere an diesem Code ist der UnDo-Befehl. Damit wird das Ausschneiden des markierten Textes rückgängig gemacht. Der Code funktioniert auch 2021, allerdings gefällt mit nicht, dass mit einem WordBasic-Befehl gearbeitet wird, der aus der Zeit von Word 97 stammt. Tatsächlich enthält auch das moderne VBA einen UnDo-Befehl:

ActiveDocument.Undo

Die moderne Version des Codes lautet also:

Sub SpikeCopy()
  'Paul Beverley Version 26.02.11; Walter Greulich 2021
  'Copy to spike
NormalTemplate.AutoTextEntries.AppendToSpike Range:=Selection.Range
ActiveDocument.Undo
End Sub

Dem Makro wird ein Tastenkürzel zugewiesen (z. B. <Strg-F3>, womit das Kürzel für die Urversion der Spike-Funktion überschrieben würde) oder es wird auf das Menüband oder die Schnellzugriffsleiste gelegt, wo es per Maus aufgerufen werden kann.

Nachdem die letzte Textstelle aufgespießt wurde, kann der Inhalt der Autotextsammlung an beliebiger Stelle im gleichen Dokument oder auch in einem anderen Dokument eingefügt werden. Das geht am einfachsten per <Strg-Umsch-F3>. Eine andere Möglichkeit bestünde darin, die AutoText-Funktion von Word aufzurufen, die Sammlung anzuklicken und Einfügen zu wählen. Im Augenblick des Einfügens wird die Sammlung geleert. Das Leeren lässt sich nicht verhindern. Soll sichergestellt werden, dass die Liste für eine spätere Einfüge-Aktion erneut zur Verfügung steht, muss sie nach dem ersten Einfügen markiert und bewusst als Autotext abgelegt werden: Liste markieren, dann AutoText-Funktion aufrufen, dann Auswahl im AutoText-Katalog speichern, dann Namen vergeben und OK. Dieser Autotext bleibt erhalten. Danach kann die Liste jederzeit in ein Dokument eingefügt werden, indem der Name des Autotextes direkt in das Dokument eingetastet und dann die Taste F3 gedrückt wird.

Makros zum Indexing

Variabler Text

Ziel: Textstücke (Wörter, Absätze) sollen an zentraler Stelle verwaltet, aber beliebig oft im Dokument eingesetzt werden können. Wenn der Inhalt des Textstücks dann an der zentralen Stelle geändert wird, sollen sich alle Stellen im Dokument, an denen darauf verwiesen wird, automatisch mitändern.

Suchen/Ersetzen ist keine Alternative, weil es evtl. andere Stellen im Dokument gibt, die genauso lauten, aber nicht verändert werden sollen. Ein Beispiel wäre ein Name, der mehrmals im Dokument vorkommt, aber nur an bestimmten Stellen automatisch verändert werden soll. Umsetzen lässt sich das mit

  • Textmarken und Querverweisen oder mit
  • Dokumenteigenschaftsvariablen und dem DocProperty-Feld oder mit
  • Dokumentvariablen und dem DocVariable-Feld.

Man könnte daran denken, dass Autokorrektur oder AutoText bei der Erzeugung eines Textes eingesetzt werden könnten (Eintippen eines Kürzels, das automatisch in den eigentlichen Text umgewandelt wird). Das ist zwar grundsätzlich richtig, aber solche Textstellen würden sich in keiner Weise von anderen unterscheiden, könnten also nur manuell oder per Suchen/Ersetzen verändert werden. Eine Variabilität der oben beschriebenen Art wäre nicht gegeben.

Textmarken

Textmarken kommen immer dann zum Einsatz, wenn Querverweise benötigt werden. Querverweise zeichnen sich dadurch aus, dass sie genau den Text wiedergeben, der sich „in der Textmarke befindet“.

Um eine Textmarke zu erzeugen, wird üblicherweise ein Textstück (etwa der Name Müller) markiert und dann per Menü [Einfügen - Textmarke] das Textmarken-Fenster aufgerufen. Nun wird ein Name vergeben (z. B. muel) und mit OK bestätigt.

Anschließend kann im Dokument an beliebigen Stellen ein Querverweis auf diese Textmarke eingebaut werden, indem die Querverweis-Funktion betätigt wird. Da diese Funktion letztlich nichts anders macht, als ein REF-Feld einzufügen, kann auch gleich (also unter Umgehung der Querverweisfunktion) dieses Feld eingebaut werden. Dazu Strg-F9 betätigen und dann zwischen den Feldklammern eintippen: REF „Name der Textmarke“. Im genannten Beispiel würde das Feld so aussehen: { REF „muel“ }. Mit Alt-F9 kann von der Feldsyntax-Ansicht in die Feldergebnisansicht umgeschaltet werden und an der Stelle des REF-Feldes würde „Müller“ angezeigt werden.

Das Feld { REF „muel“ } kann an beliebigen Stellen und beliebig oft im Dokument eingebaut werden. Um an allen diese Stellen nicht Müller, sondern „Schmidt“ anzuzeigen, bräuchte jetzt nur der Inhalt der Textmarke geändert, das gesamte Dokument markiert und die Feldaktualisierung per F9 ausgelöst zu werden. Wichtig dabei ist, dass tatsächlich nur der Inhalt der Textmarke, nicht aber der Name der Textmarke geändert wird. Sonst ginge der Bezug verloren.

Das Textmarken-Verfahren hat den großen Vorteil, ohne großen Aufwand umgesetzt werden zu können. Man könnte z. B. eine Liste von Begriffen in einer Tabelle am Anfang oder Ende des Dokuments vorhalten und jeden der Begriffe mit einer Textmarke versehen. Die Tabelle wäre dann die zentrale Stelle der Verwaltung der „Variablen“.

Ein kleiner Nachteil des Verfahrens besteht darin, dass die Textmarken (also die Tabelle, die sie enthält) Teil des Dokumenttextes sind, also genauso gesehen werden und Platz benötigen wie der eigentliche Dokumenttext. Gebraucht werden sie aber eigentlich nur temporär. Sie müssten zum Abschluss des Projekts aus dem Dokumenttext entfernt werden. Das grundsätzlich kein Problem, aber die REF-Felder dürfen danach nicht mehr aktualisiert werden. Um einer versehentlichen Aktualisierung vorzubeugen, sollten alle REF-Felder in normalen Text umgewandelt werden: Strg-a, dann Strg-6 oder Strg-Umsch-F9.

Als weiteren Nachteil könnte man sehen, dass Textmarken nicht von anderen Dokumenten aus aufgerufen werden können. Sie gehören immer genau zu einem Dokument, und nur innerhalb dieses Dokuments können Bezüge zu ihnen hergestellt werden (per REF-Feld). Doch auch das lässt sich einfach lösen: Die Tabelle mit den Textmarken braucht nur kopiert und in ein anderes Dokument eingefügt zu werden, und schon stehen die Textmarken auch hier zur Verfügung.

  • Anmerkung: Mithilfe der Funktion Zentral und Filialdokumente können Textmarken auch über mehrere Dokumente hinweg aufgerufen werden.

Weiterhin wichtig zu wissen: Als zentrale Stelle lässt sich eine Dokumentvorlage anlegen, die die Tabelle mit den Textmarken enthält. Die Pflege der Textmarken würde dann immer in der Dokumentvorlage geschehen. Braucht man die Textmarken in einem neuen Dokument, so könnte dieses Dokument einfach auf Basis der Dokumentvorlage erzeugt werden. Bei einem bereits existierenden Arbeitsdokument müsste ein kleiner Umweg gegangen werden: Erst neues Dokument auf Basis der besagten Dokumentvorlage erzeugen, dann die hier vorhandene Tabelle mit den Textmarken kopieren und in das Arbeitsdokument einfügen. Das neue Dokument könnte dann - ohne speichern - geschlossen werden, weil es seinen temporären Zweck erfüllt hat.

Dokumenteigenschaftsvariablen

Die zentrale Stelle, an der variable Texte verwaltet werden, kann aus dem Dokumenttext herausverlagert werden, und zwar hin zum Dokumenteigenschaftsfenster. Jedes Dokument besitzt Eigenschaften wie die Dateigröße, die Zahl der Buchstaben und Wörter usw. Neben den sich automatisch ergebenden Eigenschaften können auch benutzerdefinierte „Eigenschaften“ eingegeben werden. Dabei handelt es sich aber nicht um wirkliche Eigenschaften, sondern um Textvariablen.

Vorgehen: Menü [Datei - Informationen], dann die Schaltfläche Erweiterte Eigenschaften betätigen:

Aufruf der Dokumenteigenschaften

Es geht ein Fenster mit mehreren Reitern auf, hinter denen sich Informationen zu Eigenschaften des Dokuments verbergen. Wichtig für Textvariablen ist der Reiter Anpassen:

Dokumenteigenschaftsfenster mit dem Reiter Anpassen

Es gibt etliche Standard-Variablen wie Abschlussdatum, Projekt usw. Klickt man auf eine der Variablen, kann bei Typ ausgewählt werden, ob es sich um Text, Zahl oder Datum handelt, und bei Wert wird der eigentliche Inhalt der Variablen eingegeben. Mit Hinzufügen wird der Wert festgehalten und mit OK wird bestätigt, und schon steht die Variable mit dem ihr zugeordneten Wert im Dokument zur Verfügung.

Um den Variablenwert im Text anzuzeigen, wird das Feld DocProperty benötigt. Hat man zum Beispiel die Variable Projekt mit dem Wert 567 belegt, so sieht die Syntax des DocProperty-Feldes wie folgt aus:

{ DOCPROPERTY Projekt \* MERGEFORMAT }

und in der Feldergebnisansicht (Umschalten mit Alt-F9) zeigt sich der Wert, also 567. Alle Stellen im Text, an denen das Feld eingebaut wird, zeigen dasselbe Ergebnis an.

Soll nun überall eine andere Projektnummer angezeigt werden, geht man in das Fenster der Dokumenteigenschaften und ändert auf dem Reiter Anpassen die Nummer und bestätigt mit OK. Anschließend ist über Strg-a der gesamte Dokumenttext zu markieren und F9 zur Feldaktualisierung zu betätigen.

Wie im Beispiel der Projektnummer kann auch mit benutzerdefinierten Variablen verfahren werden:

  • Im Dokumenteigenschaftsfenster in den leeren Streifen Name klicken und den Namen der Variablen eintippen, z. B. abc.
  • den Typ der Variablen wählen (z. B. Text) und den Wert (z. B. „Dies ist ein Test“) eingeben. Nun die Schaltfläche Hinzufügen betätigen und alles mit OK abschließen.
  • Im Dokumenttext das DocPropety-Feld einfügen und als „Namen“ eintragen: abc, d. h. , die Feldsyntax lautet:

{ DOCPROPERTY abc \* MERGEFORMAT }

  • Wird in die Feldergebnisansicht umgeschaltet (Alt-F9) , zeigt sich: Dies ist ein Test.
  • Überall im Dokumenttext, wo „Dies ist ein Test“ benötigt wird, kann das DocProperty-Feld eingebaut werden.

Die Variabilität zeigt sich wieder daran, dass nur der Wert der Variablen abc im Dokumenteigenschaftsfenster, also an einer zentralen Stelle, geändert werden muss und schon sind alle zugehörigen DocProperty-Stellen im Dokumenttext auf dem aktuellen Stand (vorher noch Strg-a und F9).

Nachteil des DocProperty-Verfahrens:

  • Die Variablen stehen nur im aktuellen Dokument zur Verfügung. Sie können nicht einfach kopiert und in ein anderes Dokument eingefügt werden.
  • Eine Verbesserung ergibt sich, wenn die Variablen in eine Dokumentvorlage eingegeben werden. Dann kann die Dokumentvorlage als zentrale Schaltstelle fungieren. Allerdings werden die Variablen nur an Dokumente übergeben, die auf Basis dieser Dokumentvorlage erzeugt werden. Das heißt, vorhandener Dokumenttext müsste in das leere neue Dokument hineingebracht werden (per Copy and Paste oder per Menü [Einfügen - Objekt - Text aus Datei]

Dokumentvariablen

Als zentrale Stelle zur Verwaltung dient bei Dokumentvariablen das Visual-Basic-Fenster. Mit anderen Worten: Jede Variable wird als Makro angelegt!

Vorgehen:

  • Menü [Entwicklertools - Makro - Makronamen eingeben - Erstellen]; der Makroname könnte z. B. lauten: test01
  • man landet im Visual-Basic-Fenster und es wird ein leeres Makro angezeigt, das mit Code befüllt werden muss. Der Code lautet:
  • ActiveDocument.Variables.Add Name:=„Name der Dokumentvariable“, Value:=„Wert der Dokumentvariable“
    • Beispiel: ActiveDocument.Variables.Add Name:=„abc“, Value:=„Dies ist ein Docvariablentest“
  • Abspeichern und zum Word-Dokument (zurück)gehen.
  • Makro ausführen, also Menü [Entwicklertools - Makro - Makronamen auswählen - Ausführen]; im Beispiel wird als Makroname test01 ausgewählt. Erst das Ausführen des Makros stellt den Variableninhalt nachfolgenden Aktionen (wie dem Einsatz des DocVariable-Feldes) zur Verfügung.
  • DocVariable-Feld an der Stelle im Text einbauen, an der der Inhalt der Variablen angezeigt werden soll; im DocVariable-Feld muss der Name der Variablen eingegeben werden:
    • { DOCVARIABLE abc }
    • in der Feldergebnisansicht wird dann (nach Feldaktualisierung mit F9) angezeigt: Dies ist ein Docvariablentest

Vorteile des Dokumentvariable-Verfahrens:

  • Es ist sozusagen doppelt variabel, denn der Inhalt jedes Makros kann seinerseits makrogesteuert verändert werden; man könnte also etwa für ein neues Projekt die Variableninhalte aller Makros mit einem übergeordneten Makro austauschen oder auch überhaupt erst erzeugen.
  • Das Einfügen des Variableninhalts in den Dokumenttext kann per Makro geschehen. Dazu müsste ein übergeordnetes Makro vorhanden sein (oder noch angelegt werden), das nach Aufruf ein Eingabe-Fenster öffnet, in das der Name der Docvariablen eingegeben wird. Nach Bestätigung mit OK steht der Variableninhalt im Text (in einem DocVariable-Feld). Um den Aufruf des übergeordneten Makros möglichst komfortabel zu gestalten sollte ihm ein Tastenkürzel zugeordnet sein. Damit man immer das richtigen Variablennamen in das Eingabe einträgt, sollte neben dem Bildschirm eine Tabelle mit Variablennamen und zugeordneten Variableninhalt liegen, aus der man den Namen abschreiben kann.
  • Makros können nicht nur von einer Dokumentvorlage an ein neues Dokument, sondern auch an jedes andere existierende Dokument übergeben werden (Einsatz des „Organisieren“-Fensters).

Nachteile des Dokumentvariable-Verfahrens:

  • Die Handhabung ist aufwändiger als bei den anderen beiden Verfahren;
  • zur Verwaltung ist eine Person nötig, die sich mit Visual Basic auskennt.

Word-Formulare

Einzelne Absätze vor Bearbeitung schützen

  • Absatz (oder auch mehrere Absätze auf einmal) markieren
  • nun <Entwicklertools - Gruppe „Steuerelemente“ - Richt-Text-Inhaltssteuerelement>

Damit wird aus dem Absatz (den Absätzen) ein Steuerelement, dessen Eigenschaften - ebenfalls auf der Gruppe „Steuerelemente“ - eingestellt werden können. U. a. kann gewählt werden:

  • Das Inhaltssteuerelement kann nicht gelöscht werden.
  • Der Inhalt kann nicht bearbeitet werden.

Speicherung der Daten eines Formulars (Export der Daten)

  • Menüband <Datei - Optionen - Erweitert>

dann

  • beim Punkt „Genauigkeit beim Freigeben dieses Dokuments beibehalten:“ die Checkmarke „Formulardaten als durch Trennzeichen getrennte Textdatei speichern“ setzen. Sie lässt sich nur dokumentbezogen setzen, nicht für eine Dokumentvorlage.

Danach führt der normale Speichern-Befehl zum Datenexport, nicht mehr zum Speichern der Gesamtdatei. Um also wieder normal speichern zu können, muss die Option wieder umgestellt werden.

Word 2007/2010: Dateiformat und Konsequenzen

Das Dateiformat von Office 2007 ist XML. Das hat zur Konsequenz, dass jede Word-Datei, die sich einem als .docx- oder .docm-Datei präsentiert, in Wirklichkeit ein Dateipaket ist, dass sich aus vielen XML-Dateien zusammensetzt!

Um das sehen zu können,braucht man einfach nur die Endung .zip an den Dateinamen dranzuhängen, sodass das Paket als Zip-Archiv (was es letzten Endes ist) behandelt und somit auch geöffnet werden kann. Also:

  • aus <name>.docx wird <name>.docx.zip

Nach dem Ansehen/Ändern einfach .zip wieder wegnehmen, und die Datei ist wie zuvor als Word-Datei nutzbar.
Eine weitere wichtige Konsequenz: Im darin enthaltenen Ordner „media“ sind sämtliche Bilder und Grafiken, die im Word-Dokument eingebettet sind, als einzelne Dateien enthalten! D.h., wenn es darum geht, diese Elemente zu vereinzeln, damit ein Grafiker/Layouter sie weiterverarbeiten kann, muss man sie einfach nur aus diesem Ordner herauskopieren! D.h. aber auch, dass zur Vereinzelung von Bildern in einem älteren Word-Dokument dieses nur mit Word 2007 geöffnet und im neuen Format abgespeichert werden muss!

Der Clou ist das XML-Format.

Könnte dann evtl. auch mit OpenOffice ähnlich verfahren werden? Ja, in der Tat,das geht dort genauso! Ebenfalls an .odt einfach nur .zip dranhängen und schon hat man Zugriff auf sämtliche Elemente!

Dokumenteigenschaften, Dokumentbereich und Dokumentinspektor

Dokumentbereich

In Word 2010 gibt es auf dem Reiter „Entwickertools“ unter „Vorlagen“ einen äußerst interessanten Befehl: Dokumentbereich. Wenn man den aufruft, erscheint ein Fenster, in dem zwei Dinge eingestellt werden können: a) Zuweisen einer benutzerdefinierten Vorlage für den Dokumentinformationsbereich, b) Einstellungen für den Dokumentinformationsbereich.

a) hab ich noch nicht ausprobiert, bei b) am besten das Häkchen setzen und sehen, was passiert.

Nach dem Häkchensetzen bei b) erscheint am oberen Dokumentrand ein „Datensatz“ mit einigen Feldern, in die Metadaten zum Dokument (wie Autor, Schlüsselwörter usw.) eingetragen bzw. in denen vorhandene Daten geändert werden können. Interessant ist, dass auch der Speicherort der Datei angezeigt wird.

Tipp: Der Dokumentinformationsbereich lässt einfacher aufrufen, wenn man den Befehl „Eigenschaften“ (unter „Alle Befehle“ zu finden) auf die Schnellzugriffsleiste legt.

Links oben im Dokumentinformationsbereich können unter der Schaltfläche „Dokumenteigenschaften“ die „Erweiterten Dokumenteigenschaften“ aufgerufen und angezeigt werden. Das ist nichts anderes als das, was bis Word 2003 unter Menü <Datei - Eigenschaften> direkt zugänglich war. Das heißt, es geht ein Fenster mit mehreren Reitern auf:

  • Allgemein
  • Zusammenfassung
  • Statistik
  • Inhalt
  • Anpassen

Während die ersten vier Reiter die üblichen Informationen bieten, lassen sich über den Reiter Anpassen die Werte von Dokumenteigenschaftsvariablen festlegen und sogar neue Variablen deklarieren. Die Variablenwerte können mit dem Feld DocProperty in ein Dokument eingefügt werden.

Anmerkung: Weitere Textvariablen erhält man mit Textmarken und speziellen Makros, die mit dem DocVariable-Feld ausgelesen werden können (siehe oben: „Variabler Text“).

Dokumentinspektor

Ich bin nicht sicher, ob es den nicht auch bereits in Word 2003 gab. In Word 2007 konnte er aufgerufen werden, indem man den runden Button links oben anklickte; daraufhin ging ein Menü auf, in dem der Inspektor direkt gewählt werden konnte.

In Word 2010 ist er etwas indirekter aufrufbar: Menüband <Datei - Informationen - Auf Probleme überprüfen (Für die Freigabe vorbereiten)>.

Wird der Befehl aufgerufen, erscheint ein Fenster, in dem eingestellt werden kann, auf welche Eigenschaften und Elemente hin das Dokument geprüft werden soll:

  • Kommentare, Überarbeitungen, Versionen und Anmerkungen
  • Dokumenteigenschaften und persönliche Informationen
  • Benutzerdefinierte XML-Dateien
  • Kopfzeilen, Fußzeilen und Wasserzeichen
  • Nicht sichtbarer Inhalt
  • Ausgeblendeter Text

Nach der Prüfung werden die Ergebnisse in einem neuen Fenster gezeigt, und man kann angeben, was damit passieren soll. Beipielsweise können auf einen Schlag alle Kommentare und Überarbeitungen oder alle gefundenen persönlichen Daten gelöscht werden. Nicht schlecht!

Der Befehl kann auch auf das Menüband oder die Schnellzugriffsleiste gelegt werden: Er ist eines der vielen Makros, die ganz im Hintergrund liegen. Am besten mit der rechten Maustaste auf eine freie Stelle im Menüband klicken und dann „Menüband anpassen“ wählen. Links bei „Befehle auswählen“ auf „Alle Befehle“ gehen. In der Liste, die sich zeigt, den Befehl „Dokument prüfen“ wählen und rechts an passender Stelle hinzufügen. OK.

Damit liegt er aufrufbar im Menüband.

Entsprechend bei der Schnellzugriffsleiste verfahren.

Bearbeitername in Kommentaren und Änderungen wird beim Speichern auf "Autor" zurückgesetzt

Dieser sehr irritierende Effekt tritt auf, wenn in den Datenschutzoptionen im TrustCenter ein bestimmtes Häkchen gesetzt ist:

  • Beim Speichern personenbezogene Daten aus Dateieigenschaften entfernen

Dieses Häkchen wegnehmen, dann verhält sich die Datei wie gewohnt.

Das Häkchen ist Teil der sog. dokumentspezifischen Einstellungen.

Ein weiteres Häkchen in diesem Zusammenhang ist

  • Vor dem Drucken, Speichern oder Senden einer Datei mit Überarbeitungen oder Kommentaren warnen

Auch das kann weggenommen werden, damit man nicht jedes Mal darauf reagieren muss.

Änderungen nachverfolgen

Überarbeitungen sollen beim Kopieren und Einfügen nicht verloren gehen

  • „Änderungen nachverfolgen“ ausschalten, dann den geänderten Textbereich kopieren und an anderer Stelle im selben Dokument einfügen.
    • Falls anderes Dokument, dann muss dort „Änderungen nachverfolgen“ ebenfalls ausgeschaltet sein weil sonst Kuddelmuddel entsteht).
    • Die Markup-Anzeigen-Einstellungen spielen für das Kopieren der Überarbeitungen keine Rolle.
  • Andere Möglichkeit (wobei „Änderungen nachverfolgen“ sogar eingeschaltet sein kann):
    • den geänderten Textbereich markieren und ihm eine Textmarke zuweisen (Menü [Einfügen - Textmarke]); den Namen der Textmarke merken.
    • nun im anderen Dokument zu der Stelle gehen, an der der Bereich eingefügt werden soll und dann wählen: Menü [Einfügen - Objekt - Text aus Datei - Bereich]. Im Bereichsfenster den Namen der Textmarke eingeben, Datei auswählen, OK.
    • Dieses Verfahren klappt natürlich nur, wenn der Text in einem anderen Dokument eingefügt werden soll, denn eine Datei kann nicht in sich selbst eingefügt werden.

Table of Authorities/Rechtsgrundlagenverzeichnis

Auf das TA-Feld und das TAO-Feld kann nur zugegriffen werden, wenn in Word die Bearbeitungssprache Englisch zusätzlich zu Deutsch eingestellt ist!

Dazu in Windows die Office-Tools zum Office-Paket aufrufen und dann in die Spracheinstellungen gehen; dort unter [Weitere Bearbeitungssprachen hinzufügen] Englisch wählen.

Wird Word anschließend neu gestartet steht im Menüband unter „Verweise“ die Gruppe „Rechtsgrundlagenverzeichnis“ zur Verfügung.

Word 2007: Ribbon-Anpassung

In der c't vom 6.7.2009 war ein äußerst interessanter Artikel über die Möglichkeiten zur Anpassung der Multifunktionsleiste („Ribbon“) von MS Office 2007.
Links zu/aus diesem Artikel:

Wichtig: zum Ändern des Ribbons muss eine customUI-Datei im ZIP-Verzeichnis der jeweiligen Word-Datei abgelegt werden (vergl. vorstehenden Punkt: Dateiformat)

Empfehlenswertes Buch: Minhorst/Breden „Ribbon-Programmierung für Office 2007“. Addison Wesley 2009

Drucken/Erzeugen von PDFs

siehe Acrobat/PDF

Probleme mit Schriften

Solange alle an einem Projekt Beteiligten die gleichen Schriften auf ihren Rechnern haben, sollte es bei der Darstellung und beim Drucken von Dokumenten keine Schriftenprobleme geben.

Fehlt bei einem Beteiligten eine Schrift, so kann es ausreichen, sie im Dokument einzubetten:

Menü <Datei - Optionen - Speichern - Schriftarten in der Datei einbetten>:

Falls es nicht möglich, eine Schrift einzubetten (dafür kann es unterschiedliche Gründe geben, etwa rechtliche), muss die Schrift durch eine andere ersetzt werden. Das könnte mittels Suchen/Ersetzen geschehen oder aber mit meinem speziellen Befehl, der unter

Menü <Datei - Optionen - Erweitert - Bereich „Dokumentinhalt anzeigen“ - Schriftarten ersetzen… >

zu finden ist:

siehe auch MathType

Übernahme in Layoutprogramme

siehe spezifische Layoutprogramme

Embedded Indexing

siehe Indexing

Dort u.a. auch:

  • Index über mehrere Word-Dateien hinweg
  • Kann ein vorhandenes Register außerhalb des Index-Feldes bearbeitbar gemacht werden?

Datums- und Uhrzeitangaben in Kommentaren und Änderungen verändern oder löschen

Die Word-Datei wird geschlossen und dann an die Dateinamenerweiterung .docx drangesetzt: .zip. Die Datei xyz.docx hieße dann xyz.docx.zip. Damit wird aus dem Word-Dokument ein ZIP-Archiv oder genauer: die Archiv-Eigenschaften des Word-Dokuments kommen zum Vorschein. Denn jedes Word-Dokument im Format .docx ist ein solches Archiv. Es ist aus vielen verschiedenen „Elementen“, also kleinen xml-Dateien aufgebaut. Und an die kommt man mit dem gerade beschriebenen Verfahren heran.

Im geöffneten ZIP-Archiv ist unter anderem der Unterordner „word“ zu sehen. Darin befinden sich die xml-Dateien „document.xml“ und „comments.xml“. Beide werden kopiert und an einer Stelle der Wahl auf der Festplatte abgelegt. Nun können sie mit einem ASCII-Editor (z. B. Wordpad oder Notepad) geöffnet und bearbeitet werden. Gesucht werden Textstrings, die mit „w:date“ anfangen. In diesen „Konstrukten“ sind die Datums- und Uhrzeitangaben enthalten. Dort können sie gelöscht oder verändert werden. Zum Schluss speichern und schließen. Danach werden die so veränderten xml-Dateien wieder in das ZIP-Archiv hineinkopiert und überschreiben dabei die ursprünglichen xml-Dateien. Und ganz zum Schluss wird die Endung .zip weggenommen und man hat wieder eine normale Word-Datei, in der nun aber alle Zeitangaben verändert sind oder ganz fehlen.

Der Vorteil des ZIP-Verfahrens besteht vor allem darin, dass sich die Kommentare und Textänderungen hinsichtlich des Zeitstempels unterschiedlich behandeln und Zeitangaben sogar komplett löschen lassen.

Bei neu erstellten Dateien scheint es ein Problem zu geben:

  • in der Datei commentsExtensible.xml ist ebenfalls eine Zeitangabe enthalten, und zwar als w16cex:dateUtc=„2020-06-17T12:13:00Z“ (oder ähnlich). Sie überschreibt sämtliche Änderungen, die in der Datei comments.xml vorgenommen werden. Das heißt, zunächst muss der komplette Eintrag aus der commentsExtensible.xml gelöscht werden, erst dann wirken sich die in der comments.xml vorgenommenen Änderungen oder Streichungen so aus, dass sie in der Word-Datei angezeigt werden.

Einen einfachen Schalter zum Weglassen des Zeitstemples gibt es in Word leider nicht.

Autorangaben in Kommentaren und Änderungen verändern oder löschen

Im Prinzip gleiches Vorgehen wie bei Datumsangaben.

  • Die beiden Dateien comments.xml und document.xml werden aus dem ZIP-Archiv in einen temporären Ordner kopiert und hier bearbeitet.
  • Suche nach w:author=„Autorname“
  • Ersetze durch w:author=„neuer Autorname“

In der comments.xml könnten zusätzlich noch die Initialen verändert werden:

  • Suche nach w:initials=„Initialen“
  • Ersetze durch w:initials=„neue Initialen“

Anschließend werden die beiden Dateien wieder in das ZIP-Archiv kopiert und ersetzen hier die alten Versionen. Danach wird die Dateinamenerweiterung .zip weggenommen, und die Word-Datei liegt in veränderter Form vor.

Word für Mac (2008/2011)

Speicherort der Dokumentvorlagen

Word 2011 kann Dokumentvorlagen nur dann richtig verarbeiten, wenn sie an einem Standardspeicherort liegen:

  • /Users/Benutzername/Library/Application Support/Microsoft/Office/Benutzervorlagen (hier dann evtl. noch in weiteren Unterordnern wie „Meine Vorlagen“)

Da es auf dem Mac keinen „kleinen Finder“ entsprechend dem „kleinen Explorer“ unter Windows gibt, ist es nicht möglich, eine Dokuvorlage einfach im (innerhalb von Word) geöffneten Vorlagenfenster abzulegen. Vielmehr muss man dazu vom Finder aus den Befehl „Gehezu“ im Finder-Menü aufrufen, um zum Ordner „Library“ zu kommen. Da dies ein ausgeblendeter System-Ordner ist, muss vor der Auswahl des Befehls „Gehezu“ die Wahltaste gedrückt werden!

Symbolleisten

Damit sie zu sehen sind, müssen zwei Dinge stimmen:

  • Unter Menü <Ansicht - Symbolleisten> muss die gewünschte Symbolleiste eingeschaltet sein (Häkchen davor)
  • Falls die Symbolleisten trotzdem nicht zu sehen sind, liegt es daran, dass man sie zusätzlich grundsätzlich ein- und ausschalten kann, und zwar über das kleine ovale Symbol in der rechten oberen Ecke eines Dokumentfensters. Im Unterschied zu früheren Word-Versionen sind Symbolleisten in Word 2008 nicht mehr dem Programm, sondern dem jeweiligen Dokument zugeordnet (hat Vor-und Nachteile)

Word 2016/365 für Mac

Einige Unterschiede zur Windows-Version:

  • PDF-Dateien können auf dem Mac direkt als Bilder eingebunden werden; unter Windows sind PDFs zunächst in Bilder (jpg oder png) umzuwandeln.
  • Die Funktion „Auswahlbereich“ ist auf dem Mac über die Registerkarte „Bildformat“ (und hier über die Schaltfläche „Anordnen“) oder die Schaltfläche „Formatbereich“ zu erreichen. Unter Windows ist sie über die Gruppe „Markieren“ auf der Startregisterkarte zu finden oder ebenfalls über Registerkarte „Bildformat“, dann Schaltfläche „Anordnen“.
  • Die Funktion „Verknüpfungen mit Dateien bearbeiten“ findet sich auf dem Mac unter Menü <Bearbeiten - Verknüpfungen“. Unter Windows ist sie zu erreichen, indem man die Registerkarte „Datei“ auswählt. Das Fenster, das sich zeigt, enthält alle möglichen Informationen über die Datei; rechts unten gibt es den Bereich „Verwandte Dokumente“ und hier den Befehl „Verknüpfungen mit Dateien bearbeiten“. Sowohl auf dem Mac als auch unter Windows kann der Befehl auf das Menüband oder die Schnellzugriffsleiste gelegt werden (zu finden ist er dabei unter „Alle Befehle“).
  • Literaturverwaltung und -formatierung:
    • Quellenmanager:
      • Menüband [Referenzen - Zitate], dann im Zitataufgabenfenster rechts unten den Pfeilbutton wählen; hier „Zitatquellen-Manager“ wählen; das ist die Mac-Version des Quellenmanagers unter Windows; Im Prinzip funktioniert alles wie unter Windows, es kann jedoch keine Quellendatei (im xml-Format) eingeladen werden.
      • eine neue Quelle kann auf dreifache Weise in den Quellenmanager aufgenommen werden:
      • a) Menüband [Referenzen - Zitat einfügen]; dieses Zitat wird auch gleich in den Text eingefügt (an der Stelle, an der sich der Cursor befindet)
      • b) Menüband [Zitate], dann Zitataufgabenfenster links unten auf + klicken
      • c) im Zitatquellen-Manager die Schaltfläche „Neu“ wählen
    • Zitat-Formatvorlagen: Menüband [Referenzen - Katalog mit Formatvorlagen für Zitate aufklappen]
  • Formatvorlagenaufgabenbereich/Formatinspektor:
    • Der Fornmatvorlagenaufgabenbereich

Platzhaltsuche/Mustersuche/Suche mit regulären Ausdrücken (RegEx)

Ausschließen von Wörtern, nach denen ein Punkt (oder ein anderes Nicht-Buchstabenzeichen) steht, von der Rechtschreibprüfung und Trennung

Dazu sind mehrere Schritte nötig.

  1. Suche nach Punkt hinter Wort (per Platzhaltersuche: suche nach „[a-zA-Z]@>.“), dadurch wird das Wort inklusive des Punktes automatisch markiert;
  2. Zuweisen einer Zeichenformatvorlage (möglichst einer neutralen)
  3. Markieren aller Instanzen der Zeichenformatvorlage
  4. Menüband <Überprüfen - Sprache - Sprache für Korrekturhilfe festlegen - Häkchen setzen bei „Rechtschreibung und Grammatik nicht prüfen“>

Vergleich von Platzhaltersuche und normaler Suche bei variablen Ersetze-Vorgängen

Regulärer Ausdruck für Suchen-Ergänzen, also suche und ersetze durch „Suche-nach-Text“: ohne Platzhalter wird nach einem Textstring gesucht; der Suche-nach-Text wird durch ^& im Ersetzen-Feld gekennzeichnet; mit Platzhaltern geht es z.B. folgendermaßen:

  • Suche nach: (r>) ((Suche nach r am Wortende; mit den Klammern wird eine Gruppe gebildet))
  • Ersetze durch: ##\1## ((da es nur eine Gruppe gibt, steht \1 für diese Gruppe; ergänzt wird in diesem Beispiel ## davor und dahinter))

Fußnoten

Nummerierung stimmt nicht und/oder Fußnotentext verschwunden

Beim Suchen/Ersetzen von Fußnoten kann es passieren, dass die Fußnote „zerschossen“ wird: Möglicherweise ist das

  • Fußnotenzeichen noch im Dokumenttext zu sehen,
  • aber die Fußnote (Nummer und Text) wird nicht mehr im Fußnotenbereich angezeigt, das heißt die Fußnotennummerierung hat einen Sprung (z. B. von 5 auf 7);
  • auch beim Drüberstreifen mit der Maus über das Fußnotenzeichen im Text ist kein Inhalt der Fußnote zu sehen.

Dieser Effekt trat in einem Dokument auf, in dem die Änderungen-verfolgen-Funktion eingeschaltet war. Wahrscheinlich war bei der Bearbeitung die Ansicht „Markup: alle“ gewählt gewesen, sodass am Bildschirm vor lauter Änderungsmarkierungen nicht mehr klar erkannt werden konnte, welche Änderung sinnvoll war, welche nicht. Zusätzlich war sehr wahrscheinlich beim Suchen/Ersetzen „Alles ersetzen“ gewählt worden, was verhinderte, dass der besondere Effekt an der Stelle gleich zu erkennen war. Korrigeren ließ sich der Fehler durch Rücknahme der Änderungen an der betreffenden Fußnote (im Dokumenttext und im Fußnotenbereich) und Eingabe der gewünschten Änderungen von Hand.

Verschieben des Fußnotenzeichens

(WG 28.01.13 Antwort auf Frage in Word Tips Net): „I have a document in which footnote references are in the wrong place relative to the period at the end of a sentence. I want to search for all instances where the footnote reference is before the period and move it to after the period. In some instances the period may be followed by a quote mark, in which case I would want the footnote reference after the quote mark.“
Anwort:
A multistep search/replace is needed. Let's do the case ((footnote sign)).„ first. The steps are:

  1. search for ^f.“ and replace by .„^& (^f is the code for the footnote sign, ^& for Find What Text, that means „itself“); result: .“((footnote sign)).„
  2. search again for ^f.“ and replace by ^&# (# is a special character, arbitrarily chosen for identification of all .„ instances to be deleted in the next step); result: .“((footnote sign)).„#
  3. search for .“# and replace by nothing, that means: delete it. Result: .„((footnote sign))
  4. The .“ before the footnote signs are superscripted, therefore search for .„ and the format „superscript“, replace by ^& and unchecked „superscript“.

All other cases, e.g., ((footnote sign))., are managed analogously.

Kombinieren von Ausdrücken beim Suchen

Gruppen von Ausdrücken können nicht nur gebildet werden (durch Setzen von runden Klammern), sondern die so gebildeten Gruppen können im selben Suchenlauf eingesetzt werden.

So hat man bei SmartIndex-Registern z.B. das Problem zu bereinigen, dass zwei identische Seitenverweise hintereinander kommen (durch Komma getrennt). Diese Stelle werden gefunden mit dem Muster

([0-9][0-9][0-9]), \1

wobei dies das Muster für dreistellige Zahlen ist; entsprechend müsste bei zwei- und einstelligen Zahlen verfahren werden.

Erläuterung des Musters: durch das Setzen der runden Klammern wird das Muster [0-9][0-9][0-9] als zusammengehöriger Ausdruck gekennzeichnet; nach der gesuchten Zahl kommen ein Komma und ein Blank, danach wird der Ausdruck mit \1 wiederholt. Man könnte auch mit mehreren Ausdrücken arbeiten, dann kämen \2 usw. zum Einsatz.

Tipps, Tricks, Diverses

Format übertragen

  • Bei Doppelklick auf den Formatpinsel bleibt er so lange aktiv, bis die Esc-Taste gedrückt wird. D.h., man kann ähnlich wie in OpenOffice mit dem Gießkannenmodus arbeiten und z.B. das Format einer Formatvorlage an einer Stelle im Text per Doppelklick mit dem Formatpinsel aufnehmen und dann das Dokument durchgehen und überall, wo angebracht, durch Einfachklick das Format zuweisen.

Erzwungener Blocksatz in letzter Zeile

In Word nennt sich die Funktion „Absatz anordnen“ oder auch „Anordnen Absatz“. Sie ist keine offizielle Funktion und taucht daher nicht unter „Alle Befehle“ im Menüband-Anpassungsfenster auf! Zu finden ist sie nur auf zwei Wegen:

  1. Wenn man im Makro-Fenster die Kategorie „Makros in: Word-Befehlen“ wählt und in der angebotenen Makroliste das Makro „Befehle auflisten“ wählt und laufen lässt. Wprd erzeugt eine neue Word-Datei mit einer Tabelle aller eingebauten Befehle. Hier erfährt man, dass dem Befehl „Absätze anordnen“ das Tasten-Kürzel <Strg-Umsch-j> zugeordnet ist.
  2. Wenn man im Menübandanpassungsfenster die Schaltfläche Tastenkombinationen: <Anpassen> anklickt und im aufgehenden Fenster „Tastatur anpassen“ die Kategorie „Alle Befehle“ wählt. Anschließend kann man in der Liste der Befehle bis zu „Anordnen Absatz“ scrollen und sieht die zugeordnete (oben genannte) Tastenkombination.

Ohne zu wissen, dass der Befehl den Namen „Absatz anordnen“ bzw. „Anordnen Absatz“ hat, kommt man nicht an die Tastenkombination heran! Man würde nicht vermuten, dass sich hinter diesem Namen der erzwungene Blocksatz verbirgt.

Eine andere Möglichkeit, den erzwungenen Blocksatz in letzter Zeile herbeizuführen, besteht darin, am Ende der letzten Zeile die weiche Zeilenschaltung (<Umsch-CarriageReturn>) zu betätigen. Falls die neue Zeile den Umbruch stört: Absatzmarke (die am Ende des gesamten Absatzes) markieren und

  1. in der Absatzformatierung einen möglicherweise vorhandenen „Abstand nach“ auf 0 stellen,
  2. die Schriftgröße auf einen sehr kleinen Wert (z. B. 3 pt) einstellen.

Suchen und Ersetzen von Leerzeichen zwischen Zahl und Einheit

  • a) ^#((blank))^$ durch #^&
  • b) #^#((blank)) durch ^&§
  • c) # durch nichts
  • d) ((blank))§ durch ((festes Leerzeichen))
  • Prinzip: hinzufügen - dem Hinzugefügten an anderer Stelle wieder etwas hinzufügen - erstes Hinzugefügtes entfernen - zweites Hinzugefügtes durch etwas anderes (hier: festes Leerzeichen) ersetzen

Suchen und Ändern, aber nicht weitergehen (wie in InDesign)

Dazu sind zwei Tipps in Word-Tipsnet zu finden:

erster Tipp: stammt von https://wordribbon.tips.net/T013580_Replacing_without_Automatically_Finding.html:

  1. Strg-h (übliches Aufrufen des Ersetzen-Fensters)
  2. Nach dem Abschicken der Suche sofort das Ersetzen-Fenster schließen (per Esc).
  3. Nun Umsch-F5 betätigen. Dadurch geht Word zur der Stelle zurück, an der letzte Editiervorgang vorgenommen wurde, also dahin, wo der Ersetzenvorgang stattfand.
  4. Jetzt wieder Strg-h, damit das Ersetzen-Fenster erneut geöffnet wird.
  5. Falls die Änderung ok ist, kann über die Schaltfläche „Weitersuchen“ zur nächsten potenziellen Änderungsstelle gesprungen werden.

Es bietet sich an, die Punkte 2 bis 4 in ein Makro zu packen. Allerdings geht das meiner Einschätzung nach nicht in VBA, sondern man muss ein separates Makroprogamm wie MacroExpress nehmen.

zweiter Tipp: stammt aus dem Find&Replace-Handbuch von A. Wyatt (Seite 12):

  1. den Ersetze-Text in die Zwischenablage kopieren
  2. den zu ersetzenden Text suchen (z. B. per Strg-f), der gefundene Text ist markiert
  3. an Fundstelle Suchen-Fenster verlassen
  4. Strg-v drücken; dadurch wird der markierte Text durch den Ersetze-Text ersetzt, aber die Fundstelle bleibt im Fokus, Word springt nicht einfach weiter zur nächsten Stelle
  5. per Umsch-Bild runter zur nächsten Fundstelle gehen und wieder per Strg-v ersetzen oder, falls nicht ersetzt werden soll, erneut per Umsch-Bild runter weitergehen

Da die einzelnen Schritte bereits per Tastenkombi ausgeführt werden und voneinander unabhängig sein müssen, kann ein Makro hier nicht zum Einsatz kommen.

Unterbrechen und Fortsetzen einer Suche (Weitersuchen)

Wurde eine Suche unterbrochen, kann sie auch ohne das erneute Aufrufen des Suchen-Ersetzen-Fensters fortgesetzt werden, und zwar mit folgenden Tastenkürzeln:

  • Umsch-F4
  • Strg-Bild nach unten
  • Strg-Bild nach oben

Sortieren in Word 2007

Geht nicht mehr wie in 2003 und älter durch Aufrufen des Sortierbefehls im Menüpunkt „Tabelle“, denn an sämtliche Tabellenbefehle kommt man vom normalen Text aus nicht mehr heran. Dafür steht der Befehl jetzt direkt für den Text zur Verfügung, und zwar auf dem Reiter „Start“, dort in der Gruppe der Absatzbefehle.

Suchen und Ersetzen von Formatvorlagen (FV) per Makro

Aus meiner Sicht hat Word bei der Suche nach FV per Makro einen echten Bug. Beim Aufzeichnen der Suche nach FV wird nämlich - ohne dass man es merkt - eine FV-unabhängige Absatzformatierung, die die Rahmen betrifft, mit aufgezeichnet! Diese eine Zeile (oder bei Word 2007 auch mehrere Zeilen) muss aus dem VBA-Code entfernt (oder herauskommentiert) werden, dann funktioniert es … fast. Zusätzlich muss man bei Absatz-FV bedenken, dass die gesamte Absatzformatierung und damit auch die Info über die vergebene FV in der Absatzmarke steckt. Zumindest braucht das Makro die Absatzmarke als „Anker“. D.h., beim Suchen immer ^p für die Suche nach der Absatzmarke mit eingeben. Das Ersetzen der gefundenen FV durch eine andere darf außerdem nicht im Suchen/Ersetzen-Fenster passieren, sondern muss durch direktes Zuweisen erfolgen. Dieses Zuweisen wird im Makro mit aufgezeichnet. Darüber hinaus muss mit aufgezeichnet werden, dass der Cursor nach dem Finden der Absatzmarke um eine Einheit nach links in den zu formatierenden Absatz hinein versetzt wird!

Suche findet Text in Kopfzeile, die "eigentlich" nicht existiert

Kollege M. Kanthak beschrieb den Fall, dass bei einem von einem Autor angelegten Dokument die Suche Text findet, der angeblich in der Kopfzeile der ersten Seite eines Abschnitts vorhanden ist, aber in der Seitenlayoutansicht nicht angezeigt wird.

Lösung: Der Text ist tatsächlich vorhanden, aber aufgrund der Wegnahme des Häkchens „erste Seite anders“ nicht zu sehen. Sobald das Häkchen gesetzt wird, kommt die Kopfzeile zum Vorschein.

Hintergrund:

  • Ein Abschnitt kann aus drei verschiedenen Seitentypen bestehen: erste, linke und rechte Seite. Durch Setzen/Wegnehmen von Häkchen kann die Zahl der sichtbaren Seitentypen auf eins, zwei oder drei eingestellt werden. Jeder Seitentyp kann mit einer eigenen Kopfzeile ausgestattet werden.
  • Wenn noch kein Kopfzeilen angelegt wurde, wird durch das Wegnehmen eines der Häkchen kein Text ausgeblendet. Ist jedoch, wie bei Autorendokumenten oft der Fall, bei einigen (oder allen drei) Seitentypen Text vorhanden, so wird dieser nicht etwa gelöscht, wenn das entsprechende Häkchen weggenommen wird, sondern er wird tatsächlich nur ausgeblendet. Das heißt, er kann jederzeit durch Setzen des Häkchens wieder zum Vorschein geholt werden.

Fazit:

  1. Wenn die Suche komische Ergebnisse liefert, kann das am Vorhanden- oder Nichtvorhandensein eines Häkchens in der Seiteneinstellung liegen!
  2. Bei der Bearbeitung von Autorendokumenten vor dem Setzen oder Wegnehmen von Häkchen immer zuerst den vorhandenen Text bearbeiten.

Ermittlung des Unicodes eines Zeichens

Von jedem Zeichen lässt sich der Unicode ermitteln, indem man rechts neben das Zeichen klickt und dann Alt-c drückt. Erneutes Drücken von Alt-c führt wieder zur üblichen Darstellung des Zeichens. Folgerung: Kennt man den Unicode eines Zeichens, so kann man ihn einfach eintippen, dann Maus rechts daneben und Alt-c drücken! Will man den zugehörigen ANSI-Code ermitteln (falls er existiert): Unicode kopieren, dann Programm „Zeichentabelle“ öffnen und hier in das kleine Fenster „Unicode“ einfügen; anschließend wird das Zeichen oben in der Tabelle markiert und rechts unten wird der ANSI-Code angezeigt.

Wichtig zu wissen: Alt-c führt zur Anzeige des Hexadezimalcodes, nicht des Dezimalcodes.

Suchen nach einem Unicodezeichen

Um nach Unicodezeichen suchen zu können, braucht man den Dezimalcode des Zeichens. Aus irgendeinem Grund wird in der Windows-Zeichentabelle, in der in Word integrierten Zeichentabelle (unter Einfügen - Symbol) und auch im Word-Dokument selbst (wenn man Alt-c hinter einem Buxhstaben drückt) nur der Hexadezimalcode angezeigt, nicht aber der Dezimalcode. D.h., man muss erst eine Umrechnung vornehmen, um nach Unicodezeichen suchen zu können!

Es gibt im Internet zahlreiche Umrechner von Hexadezimal- in Dezimalcode. Am besten schaut man die Codes jedoch in fertigen Tabellen nach. Eine gute Quelle ist http://www.alanwood.net.

Falls man doch mal selbst umrechnen möchte, ist zu beachten, dass folgende Ziffern in Unicode verwendet werden:

Unicode-ZifferZiffernwert dezimal ausgedrückt
00
11
22
33
44
55
66
77
88
99
A10
B11
C12
D13
E14
F15

Die dezimalen Ziffernwerte sind mit dem Stellenwert des Unicodes zu multiplizieren, wenn man in Dezimalcode umrechnen möchte. Die ersten 6 Stellenwerte sind:

543210
165164163162161160

Beim Umrechnen wird der jeweilige Ziffernwert mit dem Stellenwert multipliziert, anschließend wird summiert.

Beispiele:

HexadzimalcodeUmrechnungDezimalcodeZeichen
00A0 0 · 160 + 10 · 161 + 0 · 162 + 0 · 163 = 0 + 160 + 0 + 0 160 NO-BREAK SPACE
00E4 4 · 160 + 14 · 161 + 0 · 162 + 0 · 163 = 4 + 224 + 0 + 0 228 ä
00F6 6 · 160 + 15 · 161 + 0 · 162 + 0 · 163 = 6 + 240 + 0 + 0 246 ö
00FC 12 · 160 + 15 · 161 + 0 · 162 + 0 · 163 = 12 + 240 + 0 + 0 252 ü
2248 8 · 160 + 4 · 161 + 2 · 162 + 2 · 163 = 8 + 64 + 512 + 8192 8776

Beispiele für weitere Zeichen:

CharacterNameDecimalHex
SPACE320020
NO-BREAK SPACE16000A0
EN QUAD81922000
EM QUAD81932001
EN SPACE81942002
EM SPACE81952003
THREE-PER-EM SPACE81962004
FOUR-PER-EM SPACE81972005
SIX-PER-EM SPACE81982006
FIGURE SPACE81992007
PUNCTUATION SPACE82002008
THIN SPACE82012009
HAIR SPACE8202200A
ZERO WIDTH SPACE8203200B
ZERO WIDTH NON-JOINER8204200C
ZERO WIDTH JOINER8205200D
LEFT-TO-RIGHT MARK8206200E
RIGHT-TO-LEFT MARK8207200F
HYPHEN82082010
NON-BREAKING HYPHEN82092011
FIGURE DASH82102012
EN DASH (present in WGL4, ANSI and MacRoman)82112013
EM DASH (present in WGL4, ANSI and MacRoman)82122014
HORIZONTAL BAR (present in WGL4)82132015

WGL4: Windows Glyph List 4 (von Microsoft)

Um nun nach einem Unicodezeichen zu suchen, muss im Suchen-Fenster zunächst ^u und dann der Dezimalcode eingeben werden. Also z. B.
^u8194 für die Suche nach dem en space und
^u8201 für die Suche nach dem thin space

Ersetzen von Zeichen durch Unicodezeichen

Ein gefundenes Unicodezeichen lässt sich wie üblich durch ein Nicht-Unicodezeichen ersetzen: einfach das Nicht-Unicodezeichen in das Ersetzen-Fenster eingeben und „Ersetzen“ wählen.

Wie aber geht das Ersetzen eines beliebigen Zeichens durch ein Unicodezeichen?

Das Problem: Im Ersetzen-Fenster lässt sich weder Dezimal- noch Hexadezimalcode eingeben.

Es bleibt nur die Zwischenablage. Das bedeutet: Das Unicodezeichen muss kopiert und in das Ersetzen-Fenster eingefügt werden. Um ein Unicodezeichen kopieren zu können, muss es entweder bereits irgendwo im Text vorkommen und man muss diese Stelle finden oder man ruft die Windows-Zeichentabelle auf, gibt im „Unicode-Kästchen“ den Hexadezimalcode (nicht den Dezimalcode) des Zeichens ein und wird sofort innerhalb der Zeichentabelle zum Zeichen geführt. Nun einfach die Buttons „Auswählen“ und „Kopieren“ drücken. Damit befindet sich das Zeichen in der Zwischenablage und kann im Ersetzen-Fenster in Word eingefügt werden.

Zeichen, die sich in Word nicht suchen und ersetzen lassen

Solche Zeichen (wohl meist irgendwelche Unicode-Zeichen) können „zugänglich“ gemacht werden, indem die Datei zunächst als RTF-Datei abgespeichert und anschließend wieder geöffnet wird. Dabei werden anscheinend alle nicht dem ANSI-Code entsprechenden Zeichen durch Zeichen aus diesem Code ersetzt und können dann auch gesucht und ersetzt werden.

Suchen nach Listenformaten

Wenn in einem Dokument Aufzählungen oder Nummerierungen manuell (also über die entsprechenden Schaltflächen) vergeben wurden, sind alle so formatierten Absätze mit der Formatvorlage „Listenabsatz“ belegt, falls das Ausgangsformat „Standard“ war. War das Ausgangsformat ein anderes (etwa „fliess“), so liegt nach dem manuellen Zuweisen einer Aufzählung oder Nummerierung zwar ein Listenabsatz dahinter, aber im Formatvorlagen-Aufgabenbereich oder im Formatinspektor wird die Listeneigenschaft nicht angezeigt, sondern man sieht nur den Namen der verwendeten Formatvorlage (also in diesem Fall „fliess“); die Listeneigeneschaft wird dem Absatzformat lediglich „übergestülpt“. Das gilt nicht nur einfache Listen, sondern auch für mehrstufig gegliederte.

In allen Fällen ist es nicht möglich, gezielt nach den Listen zu suchen, um sie beispielsweise durch ein anderes Fromat zu ersetzen. Auch „alle Instanzen markieren“ funktioniert nicht oder nur „halb“, da die Funktion z. B. nicht zwischen Aufzählungen und Nummerierungen unterscheidet.

In einem Dokument mit zahlreichen Listen, die umformatiert werden sollen, ist es dann natürlich sehr mühsam, jeden Listenpunkt einzeln anfahren zu müssen.

Die einzige mögliche Lösung, die mir einfällt, besteht darin, das Dokument in RTF umzuwandeln, dann die RTF-Datei als Nur-Text-Datei zu öffnen und innerhalb der Datei nach Nummerierungen zu suchen. Hat man eine solche Stelle gefunden, schreibt man am besten einen kurzen Dummy-Text (etwa „xyz“) an den Anfang des Absatzes mit dem Ziel, nach diesem eindeutigen Dummy-Text nach der anschließenden Zurückumwandlung in das normale docx-Format suchen zu können.

Eine Nummerierung in RTF ist gekennzeichnet durch die Nummer, gefolgt vom Tag \tab. Man kann also per Mustersuche nach

[0-9].\\tab

suchen (falls nach der Nummer ein Punkt kommt) oder nach

[0-9]\\tab

(falls nach der Nummer kein Punkt kommt). Bei der Fundstelle muss man anhalten und den Text (z.B. „xyz“) eingeben. Dann geht die Suche weiter.

Insbesondere bei gegliederten Listen kann das von großem Vorteil ein, weil man jede Ebene mit einem anderen Dummy-Text versehen kann.

Zu beachten: Der Dummytext sollte vor dem ersten Wort des Absatzes eingegeben werden. Im RTF ist allerdings der eigentliche Text nicht unbedingt gleich hinter dem \tab-Tag zu sehen. Um nicht mühselig mit den Augen nach dem Textanfang zu suchen, kann der Dummy-Text auch nach der schließenden geschweiften Klammer (die üblicherweise auf den \tab-Tag folgt) eingegeben werden, also etwa so:

1.2.\tab} xyz

Verweispfeil

ANSI-173 und Symbol-Zeichensatz (strg-shift b)

Finden von leeren Tabellenzellen, auf denen ein bestimmtes Format liegt

  • geht nicht mit „alle Instanzen markieren“
  • man muss mit Suchen/Ersetzen arbeiten, und zwar immer in beiden Felder die Information zu Formatvorlagen eingeben

Literaturverwaltung

Die Quellendaten (Source.xml) werden von Word unter C:\Users\<benutzername>\AppData\Roaming\Microsoft\Bibliography\Sources.xml abgelegt.

Könnte man eine eigene quell.xml erzeugen, so könnte diese in Word importiert werden und es entfiele das mühselige Eingeben der einzelnen Daten in der Quellenverwaltung von Word. Eine Möglichkeit besteht darin, die Daten in einer Excel-Tabelle zu erfassen und dann von dort als xml zu exportieren. Worauf beim Export von Excel-Daten alös XML-Daten zu achten ist, kann z.B. im folgenden Youtube-Video angeschgaut werden:

https://www.youtube.com/watch?v=9bat12gH3Qs

Die Erfassungsarbeit in Excel kann man sich sogar noch ersparen, wenn mit das Literaturverzeichnis am Ende eines von einem Autor abgelieferten Dokuments in eine Excel-Tabelle umwandelt.

Der Weg wäre also:

Literaturverzeichnis in Word-Dokument -> Excel -> xml -> Quellenverwaltung in Word

Normal.dot(m): Probleme mit Meldungen zu Änderungen

Es kann zu der Situation kommen, dass Word beim Beenden die Meldung bringt, es habe Änderungen an der Normal.dot(m) gegeben, obwohl keine Änderungen vorgenommen wurden.

Damit die Meldung überhaupt erscheinen kann, muss in den Word-Optionen (Gruppe „Erweitert“) das Häkchen im Kästchen „Bestätigung vor dem Speichern von Normaldot“ gewählt sein, was standardmäßig der Fall ist. Die Checkmarke sollte keinesfalls weggenommen werden, denn dann hätte man keine Kontrolle mehr über die bewusst oder versehentlich vorgenommenen Änderungen an der Normal.dot(m). Wäre die Checkmarke nicht gesetzt, würde man das oben beschriebene Problem nicht mehr sehen, der eigentliche Grund für das Auftreten der Meldung wäre aber trotzdem noch vorhanden.

Was könnte der Grund für die Meldung sein?

Der Microsoft-Support (Microsoft-Support-Meldung zur Normal.dot(m)) führt folgende Möglichkeiten an:

  • Add-Ins, also Templates, die beim Start geladen werden.
    • Lösung: Templates vorübergehend alle aus dem Startup-Verzeichnis (C:\Users\<User-Name>\AppData\Roaming\Microsoft\Word\STARTUP) entfernen (in ein Test-Verzeichnis verschieben), dann der Reihe nach die einzelnen Templates in das Startup-Verzeichnis schieben und Word jeweils neu starten. Auf diese Weise müsste zutage treten, ob eines der Templates für die Meldung verantwortlich ist, und wenn ja, welches. Das betroffene Template sollte nicht mehr verwendet werden.
  • Com-Add-Ins, also Zusatzprogramme, die die Interaktion zwischen Word und anderen Anwendungsprogrammen steuern, z.B. der PDFMaker von Acrobat.
    • Lösung: Com-Addins-Ins (die einfach per Menü <Entwicklertools - Com-Add-Ins> aufgelistet werden können) der Reihe nach deaktivieren und Word jedesmal neu starten. Auf diese Weise sollte herauszufinden sein, welches Com-Add-In die Ursache des Problems ist. Dieses sollte dann deaktiviert bleiben. Die neue oder aktualisierte Version des jeweiligen Anwendungsprogramms ist evtl. in der Lage, problemlos mit Word zu interagieren.
  • Auto-Makros, also solche Makros, die beim Start von Word automatisch ablaufen. Das sind meistens Makros, die von anderen Anwendungsprogrammen über Add-Ins und/oder Com-Add-Ins Word aufgedrückt werden. Solche Makro werden in der Makroliste (Menü <Entwicklertools - Makros anzeigen>) angezeigt (ihr Name beginnt üblicherweise mit „Auto…“), können dort aber nicht gelöscht oder deaktiviert werden.
    • Lösung: Add-Ins oder Com-Add-Ins, zu denen die Automakros gehören, deaktivieren. Automakros, die man selbst geschrieben oder eingebaut hat und die zu Fehlfunktionen von Word führen, sollten entweder geändert oder gelöscht werden.

Falls ein Add-in, ein Com-Add-In oder ein Automakro schon längere Zeit verwendet wurde, ohne dass es Probleme gab, kann eine zwischenzeitliche Aktualisierung von Windows oder Office der Grund sein, dass plötzlich eine Fehlfunktion auftritt. Dann könnte eine ebenfalls aktualisierte Version des Add-ins, Com-Add-Ins oder Automakros bewirken, das die Meldung beim nächsten Word-Start nicht mehr erscheint.

Nichtkompatible Add-Ins oder Comn-Add-Ins

Erstaunlicherweise können nichtkompatible Add-Ins oder Com-Add-Ins nicht nur zu der falschen Meldung bzgl. der Normal.dot(m) führen, sondern noch Fehler ganz anderer Art verursachen.

So kam es z.B. beim Übertrag von Daten aus einer Excel-Datei in Word (eingefügt als Nur-Text) zur Erzeugung nicht sichtbarer Unicode-Zeichen, und zwar wurden einige CR-Zeichen (also Absatzmarken) nicht als übliche Absatzmarkenzeichen sondern als undefinierbare Unicode-Zeichen eingebaut; deren Unicode konnte nicht sichtbar gemacht werden (per Alt-c) und nach ihnen konnte nicht gesucht werden (auch nicht per Copy im Text und Paste im Suchen-Fenster). Was die Verteilung dieser Stellen im Dokument angeht, war kein System zu erkennen. Der Fehler trat zutage, als manchen Absätzen eine FV zugewiesen werden sollte. Der Effekt war, dass auch der Absatz darüber das neue Format erhielt. Der Verdacht lage nahe, das mit dem Zeichen für die Absatzmarke etwas nicht stimmte.

Die Lösung bestand darin, die Datei im RTF-Format zu speichern, dann zu öffnen und gleich wieder im docx-Format zu speichern. Bekanntermaßen werden Unicode-Zeichen beim Speichern als RTF in ASCII/ANSI-Zeichen umgewandelt (vgl. oben) oder ganz aus dem Dokument entfernt. Beim betrachteten Dokument waren an den betroffenen Stellen keine CR-Zeichen mehr vorhanden. Nur per Dokument-Vergleich konnten die Stellen ausfindig gemacht werden und so die richtigen Absatzmarken eingebaut werden.

Word ohne Add-Ins starten

Wenn Word gar nicht hochfährt, kann das Programm ohne Add-Ins gestartet werden:

<Win + R> drücken, dadurch geht das Fenster „Ausführen“ auf. Hier den Programmaufruf für Word, gefolgt vom Parameter /a, eingeben, also

  • Word 2010: C:\Program Files (x86)\Microsoft Office\Office14\Winword.exe /a oder
  • Word 2013: C:\Program Files (x86)\Microsoft Office\root\Office15\Winword.exe /a oder
  • Word 2016: C:\Program Files (x86)\Microsoft Office\root\Office16\Winword.exe /a

Word abgesichert starten

Dazu wird beim Starten anstelle von /a der Parameter /safe benötigt.

Danach können z. B. COM-AddIns entfernt werden.

office/word.txt · Zuletzt geändert: 2024/05/22 10:27 von walter