Word-Dokumente per VBA einlesen

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Word-Dokumente per VBA einlesen

Früher oder später möchten Sie vielleicht einmal Inhalte aus Word-Dokumenten in Access-Tabellen einlesen. Dabei gilt es einiges zu beachten: Zum Beispiel, dass sich die Inhalte nicht etwa über ein seiten- oder spaltenorientiertes Objektmodell einlesen lassen, sondern dass der Inhalt prinzipiell eine einzige Abfolge von Absätzen ist. Wie Sie diese einlesen und dabei auch die unterschiedlichen Absatz- und Zeichenformatvorlagen berücksichtigen, zeigt dieser Beitrag.

In diesem Beitrag gehen wir davon aus, dass Ihnen ein Word-Dokument mit einigen Absatzformatvorlagen und Zeichenformatvorlagen vorliegt. Dieses könnte beispielsweise wie in Bild 1 aussehen.

Beispiel-Dokument dieses Beitrags

Bild 1: Beispiel-Dokument dieses Beitrags

Wir möchten in diesem Beitrag die Techniken vorstellen, die dazu notwendig sind, die einzelnen Texte samt der Formatierung in eine Access-Tabelle einzulesen. Dazu werden wir den Text zunächst Absatz für Absatz durchlaufen und die Inhalte speichern, später schauen wir uns noch an, wie Sie die in den einzelnen Absätzen enthaltenen Zeichenformatvorlagen identifizieren können. Diese werden wir in Form entsprechender Auszeichnungen wie unter HTML in den in der Tabelle gespeicherten Texten unterbringen.

Formatvorlagen erstellen

Wenn Sie zuvor noch nicht mit Formatvorlagen gearbeitet haben, benötigen Sie noch einige grundlegende Informationen darüber. Es gibt einige verschiedene Typen von Formatvorlagen, von denen wir die folgenden berücksichtigen werden:

  • Absatzformatvorlagen: Damit werden die Formateigenschaften eines kompletten Absatzes festgelegt, also etwa Einzüge, Abstände zum vorherigen und zum nachfolgenden Absatz
  • Zeichenformatvorlagen: Damit legen Sie das Aussehen der Zeichen fest, also etwa Schriftart, Schriftgröße, Fett, Kursiv et cetera.
  • Verknüpfte Formatvorlagen: Dies sind kombinierte Formatvorlagen, die sowohl Formateigenschaften für den Absatz als auch für den enthaltenen Text festlegen. Mit einer solchen Vorlage können Sie also sowohl komplette Absätze versehen als auch einzelne, vor der Zuweisung markierte Textpassagen.

Neue Vorlage anlegen

Wenn die von Ihnen gewünschten Vorlagen noch nicht vorhanden sind, legen Sie diese zunächst an. Dazu öffnen Sie etwa unter Word 2010 zunächst den Dialog Formatvorlagen, indem Sie auf den kleinen Pfeil unten rechts in der Ribbongruppe Start|Formatvorlagen klicken. Der Dialog sieht wie in Bild 2 aus.

Formatvorlagen-Dialog

Bild 2: Formatvorlagen-Dialog

Klicken Sie hier auf die Schaltfläche Neue Formatvorlage, erscheint ein weiterer Dialog namens Neue Formatvorlage (s. Bild 3). Hier legen Sie zunächst den Namen für die neue Formatvorlage fest, zum Beispiel H1 für die erste Überschriftenebene. Als Formatvorlagentyp verwenden wir zunächst Absatz. Da dies die oberste Überschriftenebene sein soll, legen Sie für die Eigenschaft Formatvorlage basiert auf den Eintrag (Keine Formatvorlage) fest. Fehlt noch die Formatvorlage für den folgenden Absatz. Damit stellen Sie ein, welche Formatvorlage automatisch für Absätze verwendet werden soll, die nach Einfügen eines Zeilenumbruchs etwa durch Betätigen der Eingabetaste von einem Absatz mit der Formatvorlage H1 aus zugewiesen werden soll. Dieses Absatzformat haben wir bislang noch nicht festgelegt, also lassen wir die Eigenschaft auf H1 stehen.

Der Dialog Neue Formatvorlage

Bild 3: Der Dialog Neue Formatvorlage

Nun können Sie mit den Elementen im Bereich Formatierung die grundlegenden Formatierungen festlegen:

  • Schriftart
  • Schriftgröße
  • Fett, Kursiv, Unterstrichen
  • Schriftfarbe
  • Horizontale Ausrichtung
  • Vertikale Ausrichtung
  • Abstand zur vorherigen Zeile vergrößern und verkleinern
  • Einzug vergrößern und verkleinern

Danach folgen noch einige weitere Optionen:

  • Zur Liste der Schnellformatvorlagen hinzufügen: Fügt die neu erstellte Formatvorlage zur Liste der Schnellformatvorlagen im Ribbon zu (s. Bild 4).
  • Automatisch aktualisieren: Diese Option bewirkt, dass die Formatvorlage, auf die sich ein Text bezieht, bei Änderung der Formatierung des Textes im Dokument ebenfalls ändert. Wenn Sie also die neu erstellte Absatzformatvorlage auf einen Absatz anwenden und dann im Dokument die Schriftart dieses Absatzes anpassen, wird auch die Schriftart in der entsprechende Formatvorlage angepasst.
  • Nur in diesem Dokument/Neue auf dieser Vorlage basierende Dokumente: Wenn Sie gerade eine Dokumentvorlage erstellen, können Sie festlegen, ob die definierten Formatvorlagen in Dokumente übernommen werden, die neu auf Basis dieser Dokumentvorlage erstellt werden.

Schnellformatvorlagen

Bild 4: Schnellformatvorlagen

Weiter unten geht es dann ans Eingemachte: Mit einem Klick auf die Schaltfläche Format klappen Sie ein Menü auf, mit dem Sie weitere Dialoge zum Einstellen folgender Parameter öffnen können:

  • Schriftart
  • Absatz
  • Tabstopp
  • Rahmen
  • Sprache
  • Positionsrahmen
  • Nummerierung
  • Tastenkombination

Wir wollen an dieser Stelle nicht ins Detail gehen – wichtig ist, dass Sie die wichtigen Schritte zum Erstellen der Formatvorlagen kennen.

Wenn Sie neben den Absatzformatvorlagen für eine oder mehrere Überschriften auch eine für den Fließtext erstellt haben (im Beispieldokument heißt dieses p), können Sie diese bei den Überschrift-Formatvorlagen für die Eigenschaft Formatvorlage für den folgenden Absatz einstellen.

Auf diese Weise erstellen wir einige Formatvorlagen und legen ein einfaches Dokument an, das wir im Folgenden einlesen und in einer Tabelle speichern.

Verweis auf die Word-Bibliothek

Damit Sie gleich einfach auf das Objektmodell von Word zugreifen können, fügen Sie dem VBA-Projekt der aktuellen Datenbank noch einen Verweis auf die Word-Bibliothek hinzu. Dazu wählen Sie im VBA-Editor den Menüpunkt Extras|Verweise aus. Dort aktivieren Sie den Eintrag Microsoft Word x.0 Object Library (s. Bild 5).

Einfügen eines Verweises auf die Word-Bibliothek

Bild 5: Einfügen eines Verweises auf die Word-Bibliothek

Word-Dokument öffnen

Nun wollen wir das Word-Dokument öffnen, die Inhalte der einzelnen Absätze einlesen und zunächst im Direktbereich des VBA-Editors ausgeben und schließlich das Dokument und Word wieder schließen.

Dazu verwenden wir die Prozeduren und Funktionen aus Listing 1. Zunächst deklarieren wir dort eine Objektvariable zum Aufnehmen eines Verweises auf eine Instanz von Word namens objWord. Um die gewünschten Aufgaben durchzuführen, programmieren wir eine Hauptprozedur namens WordDokumentEinlesen. Diese deklariert eine Variable namens strDokument, die den Namen des einzulesenden Dokuments aufnimmt. Diese Variable füllt die Prozedur mit dem Verzeichnis der aktuellen Datenbank plus dem Namen des Beispieldokuments Beispiel.docx. Beim Aufruf der Funktion DokumentOeffnen übergibt die Prozedur den Dokumentnamen und erhält einen Verweis auf das geöffnete Dokument zurück. Dokument­Oeffnen füllt sowohl die Objektvariable objWord mit einem Verweis auf eine neu erstellte Word-Instanz als auch die Rückgabevariable objDokument mit einem Verweis auf das soeben geöffnete Dokument.

Dim objWord As Word.Application
Public Function DokumentOeffnen(strDokument As String) As Word.Document
     Dim objDokument As Word.Document
     Set objWord = New Word.Application
     Set objDokument = objWord.Documents.Open(strDokument)
     Set DokumentOeffnen = objDokument
End Function
Public Function DokumentSchliessen(objDokument As Word.Document)
     objDokument.Close False
     objWord.Quit
     Set objWord = Nothing
End Function
Public Sub WordDokumentEinlesen()
     Dim objDokument As Word.Document
     Dim strDokument As String
     Dim objAbsatz As Word.Paragraph
     strDokument = CurrentProject.Path & "Beispiel.docx"
     Set objDokument = DokumentOeffnen(strDokument)
     objWord.Visible = True
     For Each objAbsatz In objDokument.Paragraphs
         Debug.Print objAbsatz.Range.Text

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Ich habe die Datenschutzbestimmungen zur Kenntnis genommen.