Zum Inhalt springen
Der Guide für ein smartes Leben.
Ratgeber: "Doc-Formulare"

Tipp: So werten Sie Word-Formulare aus

Sämtliche Inhalte aus Word-Formularen ohne Umweg automatisch in Excel einlesen und auswerten? In Word und Excel 2010 ist das in wenigen Schritten umgesetzt. So geht's.

Autor: Markus Hahner • 31.7.2012 • ca. 6:45 Min

word, icon, symbol
word, icon, symbol
© Hersteller/Archiv

Ein großer Vorteil von Word-Formularen ist, dass sie sich flexibel und ansprechend gestalten lassen. Andererseits waren sie bei der Erstellung allzu oft eine Einbahnstraße. Die erfassten Daten vernünftig auszuwerten, in ein standardisiertes Format zu bringen und weiterzuverarbeiten war - wenn üb...

Ein großer Vorteil von Word-Formularen ist, dass sie sich flexibel und ansprechend gestalten lassen. Andererseits waren sie bei der Erstellung allzu oft eine Einbahnstraße. Die erfassten Daten vernünftig auszuwerten, in ein standardisiertes Format zu bringen und weiterzuverarbeiten war - wenn überhaupt - nur mit aufwändigen VBA-Routinen möglich.

Anders in Word 2010: Setzen Sie Inhaltssteuerelemente als Eingabefelder ein, können Sie jedes Eingabefeld mit einem Knoten einer XML-Datei verbinden. Den Aufbau der XMLDatei können Sie frei bestimmen. So lassen sich die erfassten Daten beispielsweise aus Excel heraus ansprechen und auswerten. Der standardisierte XML-Zugriff auf die Daten ist bei Bedarf auch von jedem anderen Datenbankprogramm aus möglich.

Schritt 1: Formular mit Inhaltssteuerelementen als Grundlage

Als Basis für das komfortable Auswerten ausgefüllter Word-Formulare dienen die Inhaltssteuerelemente, die Ihnen in Word auf der Registerkarte Entwicklertools in der Gruppe Steuerelemente zur Verfügung stehen. Falls Entwicklertools nicht angezeigt wird, klicken Sie im Menüband auf Datei/Optionen. Im Dialogfeld Word-Optionen mit Klick auf Menüband anpassen geht es weiter. Schalten Sie bei Hauptregisterkarten Entwicklertools ein.

software, tools, office
Weisen Sie in Ihrem Formular jedem Inhaltssteuerelement einen eindeutigen Tag zu.
© Hersteller/Archiv

Nachdem Sie Ihr Word-Formular gestaltet und den Platzhaltertext der Inhaltssteuerelemente über die Schaltflächen Entwicklertools/Steuerelemente/ Entwurfsmodus angepasst haben, verpassen Sie noch vor dem Schutz des Formulars jedem Inhaltssteuerelement einen eindeutigen Namen: Entwicklertools/Steuerelemente/ Eigenschaften. Im jetzt angezeigten Dialogfeld steht Ihnen bei allen Inhaltssteuerelementen das Textfeld Tag zur Verfügung.

Ratgeber:Grundausrüstung für Windows

Hinweis: Die Bezeichnung Tag ist ein eindeutiger Hinweis auf die in Word verfügbare XML-Anbindung der Inhaltssteuerelemente. In einer XML-Datei besitzen alle Elemente einen Start- und einen End-Tag. Beispiel: <Vorname>Beate</Vorname>. Wenngleich der Tag-Name nicht eindeutig sein muss, ist dies für die Anbindung der Inhaltssteuerelemente an die XML-Datenquelle doch empfehlenswert. Nutzen Sie als Präfix vor den Text tag, gefolgt von einem entsprechenden Namen, beispielsweise

tagReisenderVornameNachname oder tagVerpflegungskosten.

Schritt 2: Inhaltssteuerelemente mit der XML-Datenquelle verbinden

Liegt das fertige Formular vor, geht es mit dem Erstellen der XML-Datenquelle in der Word-Datei sowie der Anbindung der Inhaltssteuerelemente an die XML-Knoten weiter. Die Formate DOCX, DOCM, DOTX oder DOTM sind im Grunde ZIP-Dateien, in der die Dokument-Daten in einer definierten Datei- und Ordnerstruktur abgelegt sind. Wenn Sie beispielsweise bei einer Word-DOCX-Datei vorübergehend die Dateinamenserweiterung DOCX in ZIP ändern, können Sie sie per Doppelklick mit einem ZIP-Programm öffnen und einen Blick in die Datei werfen.

software, tools, office
Das Word 2007 Content Control Toolkit analysiert die Word-Datei und listet alle Inhaltssteuerelemente auf.
© Hersteller/Archiv

Für die XML-Datenquelle ist in der Word-Datei der Ordner customXml vorgesehen, den Sie im Root der ZIP-Datei finden. Da das manuelle Anlegen des Ordners, der dazugehörigen Verweisdateien sowie der XML-Datei selbst detaillierte Kenntnisse der DOCX-Struktur erfordern, nutzen Sie hierzu einfach das kostenlose Programm Word 2007 Content Control Toolkit (siehe Tipp Kasten), das entgegen des Namens auch mit Word 2010 zusammenarbeitet.

Ratgeber: Windows 8 mit Windows-7-Oberfläche

Starten Sie das Toolkit und öffnen Sie dort über File/Open Ihr Word-Formular. Sobald die Datei geladen ist, erscheinen auf der linken Seite die vorhandenen Inhaltssteuerelemente. Unter Tag lässt sich jedes einzelne eindeutig identifizieren.

Legen Sie nun mit einem Klick auf den Create a new Custom XML Part eine XML-Datei an. Nun erscheint auf der rechten Seite im Dropdown-Listenfeld Namespace der Eintrag (No Namespace)(1) und auf der darunterliegenden Registerkarte Bind View wird ein Ordner-Symbol und der Eintrag root sichtbar. Wechseln Sie nun auf die Registerkarte Edit View. Hier werden in dem Textfeld die beiden XML-Tags <root> und </root> angezeigt - die XML-Datei ist entsprechend bislang leer.

Hier müssen Sie nun für jedes Inhaltssteuerelement einen eigenen Knoten anlegen. Vergeben Sie diesen nun die gleichen Bezeichnungen wie für die Tags - jedoch ohne das Präfix tag. Jeder Knoten beginnt in einer neuen Zeile mit dem Kleinerzeichen < gefolgt von dem Knotennamen und den beiden Zeichen />, beispielsweise

<ReisenderVornameNachname /> oder <Reiseziel />.

software, tools, office
Der dem Inhaltssteuerelement zugewiesene XML-Pfad lässt sich mit einem Doppelklick auf das gewünschte Inhaltssteuerelement bearbeiten.
© Hersteller/Archiv

Haben Sie für alle Inhaltssteuerelemente einen Knoten angelegt, wechseln Sie zu Bind View. In der XML-Struktur wird nun jedes XML-Tag als eigener Knoten angezeigt. Zum Schluss müssen Sie die XML-Knoten nur mit den Inhaltssteuerelementen verbinden. Markieren Sie hierzu in der XML-Struktur den gewünschten Knoten. Klicken Sie dann den Knoten erneut an und ziehen ihn in die Zeile mit dem gewünschten Inhaltssteuerelement.

Sie sehen nun in der Spalte XPath der Inhaltssteuerelemente-Auflistung den Dateipfad, beispielsweise /root[1]/ReisenderVorname-Nachname[1] oder /root[1]/Reiseziel[1]. Ist jedem Inhaltssteuerelement ein Knoten zugewiesen, speichern Sie die Änderungen über File/Save und verlassen das Content Control Toolkit. Das Word-Formular ist jetzt einsatzbereit.

Sämtliche, in den Inhaltssteuerelementen eingegebenen Daten speichert Word durch die zuvor angelegten Verknüpfungen direkt in der internen XML-Datei im entsprechenden Knoten. Dies lässt sich jederzeit durch das Öffnen eines ausgefüllten Formulars im Content Control Toolkit auf der Registerkarte Edit View prüfen.

Schritt 3: Excel-Tabelle zur Auswertung vorbereiten

Die im Formular gespeicherten Daten können Sie jetzt mit jedem XML-Editor oder mit Programmen wie Excel, auslesen. Legen Sie sich hierzu eine Auswertungs-Excel-Arbeitsmappe an, als Name zum Beispiel Datenerfassung-der-Reisekostenanträge.xlsm. Das Dateiformat XLSM ist wichtig, da Sie in der Excel-Datei später auch den VBA-Programmcode zum Auslesen der Daten einfügen.

software, tools, office
Legen Sie für jedes Inhaltssteuerelement einen eigenen XML-Knoten an, der anschließend mit dem Inhaltssteuerelement verknüpft wird.
© Hersteller/Archiv

Die Inhaltssteuerelemente sollten zeilenweise auf dem ersten Blatt der Excel-Arbeitsmappe eingefügt werden (jede Zeile = ein Formular).

Ratgeber: Office-Easter-Eggs seit 1995

Dann markieren Sie die Titelzellen der ersten Zeile sowie die darunterliegenden Zellen der noch leeren zweiten Zeile. Weiter geht es mit Start/Formatvorlagen und einem Klick auf Als Tabelle formatieren. Schalten Sie in dem Dialogfeld das Kontrollkästchen Tabelle hat Überschriften ein, sodass Excel die erste Zeile des markierten Bereichs als Überschrift formatiert.

Das Formatieren als Tabelle hat den Vorteil, dass die eingelesenen Daten später automatisch optisch ansprechend formatiert werden: Je nach gewähltem Tabellenformat (kann jederzeit geändert werden) wird beispielsweise jede zweite Zeile farbig hinterlegt. Sie können auf der Kontextregisterkarte Tabellentools-Entwurf nach dem Einlesen alle Formulardaten in der Gruppe Optionen für Tabellenformat das Kontrollkästchen Ergebniszeile einschalten, um die Daten der jeweiligen Spalten einfacher zu berechnen.

Schritt 4: Einfacher VBA-Zugriff auf die XML-Daten

Zum Schluss fehlen nur noch die VBA-Routinen zum Einlesen der Word-Formulardaten in die Excel-Arbeitsmappe. Wechseln Sie hierzu mit [Alt+F11] in Excel in den VBA-Editor. Legen Sie im Projektexplorer ein neues Modul an, in dem Sie sämtlichen Programmcode platzieren. Beginnen Sie mit der Definition der Variablen, für jedes Inhaltssteuerelement wird eine eigene Variable vom Typ String angelegt:

...
Public gstrReisenderVornameNachname As
String
Public gstrReiseziel As String
Public gstrEntfernung As String
...
software, tools, office
Das Auslesen der Daten erfolgt über eine VBA-Routine in Excel, die die Daten formatiert in einer Tabelle einfügt.
© Hersteller/Archiv

Dann folgt die Routine zum Auslesen der Daten aus den Word-Dateien. Damit Excel auf Word zugreifen kann, muss mit Set wrdWordApplication = CreateObject("Word.Application") eine Word-Instanz angelegt werden.

Jetzt können Sie mithilfe von

Set ofdDateiDialog = Application.FileDialog(msoFileDialogFilePicker)

das Dialogfenster-Objekt zur Auswahl einer oder mehrerer ausgefüllter Formulare definieren und anschließend in der With ofdDateiDialog/End With-Anweisung den Aufruf des Dialogfeldes, die Ermittlung der vom Anwender gewählten Formulare sowie das Auslesen der Daten regeln. Der für den XML-Zugriff relevante Teil finden Sie hier:

...
For Each cxmlCustomXML In docDocument.
CustomXMLParts
If cxmlCustomXML.BuiltIn = False Then
Set nxmlXMLNode = cxmlCustomXML.Sele
ctSingleNode(cXMLKnotenRoot)
If Not nxmlXMLNode Is Nothing Then
Exit For
End If
End If
Next cxmlCustomXML
If Not cxmlCustomXML Is Nothing Then
pDatenAusXMLStrukturAuslesen
cxmlvCustomXML:=cxmlCustomXML
pDatenInExcelEinfügen
End If
...
software, tools, office
Das Formatieren "als Tabelle" sorgt nicht nur für eine ansprechende Gestaltung, sondern vereinfacht auch die spätere Auswertung der eingelesenen Daten.
© Hersteller/Archiv

Hier werden alle benutzerdefinierten XML-Bestandteile in der Word-Datei überprüft. Falls nicht nur Word-eigene XML-Dateien vorhanden sind, wird der in der Konstanten cXMLKnotenRoot definierte Knoten - der im Beispiel schlicht root lautet - in der XML-Datei ermittelt. Sobald der passende Knoten gefunden wurde, wird die For-Each-Schleife beendet; das zuletzt gewählte CustomXMLParts-Objekt ist somit das gültige. Entsprechend kann mit der Routine pDatenAusXMLStrukturAuslesen das Objekt mit

cxmlvCustomXML:=cxmlCustomXML übergeben werden.

Ratgeber: So sieht Office 2013  aus

In pDatenAusXMLStrukturAuslesen werden die Daten ausgelesen und den anfangs definierten Variablen zugewiesen:

gstrReisenderVornameNachname = cxmlvCustomXML.SelectSingleNode(cXMLKnotenRoot & "/ReisenderVornameNachname").Text.

Nachdem so alle Daten aus dem Word-Formular gelesen wurden, müssen sie nur noch in der passenden Excel-Zelle platziert werden.

Diese Aufgabe übernimmt die Routine pDatenInExcelEinfügen, in der bei Bedarf auch noch gleich Datenkonvertierungen ausgeführt werden. Dies ist beispielsweise bei Datumangaben notwendig, da beim aus der XML-Datei ausgelesenen Datum das Datum und die Uhrzeit durch ein "T" getrennt sind, Excel dort jedoch ein Leerzeichen erwartet. Die Routine pDatenInExcelEinfügen wechselt zuerst auf das richtige Arbeitsblatt und springt dann an das Ende der vorhandenen Daten.

...
Sheets("DatenAusWord").Select
Range("A2").Select
If Trim(ActiveCell.Value) <> "" Then
Range("A1").Select
Selection.End(xlDown).Select
Else
Range("A1").Select
End If
...

Da der Einfügebereich auf dem Arbeitsblatt als Tabelle formatiert ist, wird der neuen Zeile automatisch die korrekte Formatierung zugewiesen.

Sind alle Daten in Excel übergeben, muss die Instanz auf das Word-Objekt über die beiden Kommandos

wrdWordApplication.Quit und Set wrdWordApplication = Nothing

freigegeben werden.

Tipp

Das Word 2007 Content Control Toolkit erhalten Sie auf der Internetseite https://dbe.codeplex.com . Die rund 800 Kilobyte große Setup.msi müssen Sie nach dem Download auf Ihrem PC installieren, hierzu sind je nach Windows-Version Administratorrechte notwendig. Nach der Installation steht Ihnen sowohl auf dem Desktop als auch im Startmenü das Programmsymbol des Word 2007 Content Control Toolkits zur Verfügung.

Fazit:

Dank der Anbindung der Inhaltssteuerelemente an Word-interne XML-Strukturen ist das Erfassen und Auswerten von Formularen im Handumdrehen erledigt. So sind Word-Formulare endlich keine Einbahnstraßen mehr, sondern lassen sich als flexible Datenerfassungsinstrumente nutzen.