Daten aus Word Formularfeld in Excel übertragen
Schritt-für-Schritt-Anleitung
Um die Daten aus einem Word-Dokument als Formular in Excel zu übertragen, benötigst du ein Makro. Folgendes VBA-Skript hilft dir, die Daten aus Formularfeldern auszulesen und in eine Excel-Tabelle zu schreiben:
Sub WordFormulareAuslesen()
'Erstellt unter Excel 97 / Word 97
' Für Funktion des Makros muss im Excel VBA-Editor unter Extras-Verweise _
die Microsoft Word X.Y Object Library aktiviert werden
'Word muss vor dem Starten des Makros geöffnet sein!
Dim intI As Integer
Dim objWb As Workbook, objWks As Worksheet
Dim lngZeile As Long
Dim wdDok As Word.Document, strWorddatei As String
Dim varVerzeichnis As Variant
On Error GoTo Fehler
Set objWb = ActiveWorkbook
'Datei im Verzeichnis der Worddateien wählen
varVerzeichnis = Application.GetOpenFilename(FileFilter:="Worddateien (*.doc), *.Doc", _
Title:="Bitte eine Word-Datei im gewünschten Verzeichnis selektieren und 'Öffnen'")
If varVerzeichnis = False Then GoTo Beenden
'Verzeichnisname ermitteln aus Dateiname
Do Until Right(varVerzeichnis, 1) = "\"
varVerzeichnis = Left(varVerzeichnis, Len(varVerzeichnis) - 1)
Loop
varVerzeichnis = Left(varVerzeichnis, Len(varVerzeichnis) - 1)
'Tabellenblatt für Liste einfügen
Set objWks = objWb.Worksheets.Add(After:=objWb.Sheets(1), Type:=xlWorksheet)
With objWks
'Spalten formatieren
.Cells.VerticalAlignment = xlVAlignTop
With .Columns(1)
.NumberFormat = "@"
.ColumnWidth = 25
End With
With .Columns(2)
.NumberFormat = "DD.MM.YYYY"
.ColumnWidth = 12
End With
With .Columns(3)
.NumberFormat = "@"
.WrapText = True
.ColumnWidth = 50
End With
With .Columns(4)
.Style = "Standard"
.ColumnWidth = 10
End With
.Range(.Columns(1), .Columns(4)).AutoFit
'Titelzeile ausfüllen
lngZeile = 1
.Cells(lngZeile, 1) = "Dateiname"
.Cells(lngZeile, 2) = "Datum"
.Cells(lngZeile, 3) = "Anmerkung"
.Cells(lngZeile, 4) = "Erledigt"
Range("A2").Select
'1. Zeile Fenster fixieren
ActiveWindow.FreezePanes = True
End With
'Neue Datei zum Zusammenführen der Tabellen Dateien anlegen
Application.ScreenUpdating = False
'Worddateien im Verzeichnis Öffnen
strWorddatei = Dir(varVerzeichnis & Application.PathSeparator & "*.doc")
intI = 0 'Zähler für Worddateien
'Word Programmfenster aktivieren
Application.ActivateMicrosoftApp (xlMicrosoftWord)
Word.Application.ScreenUpdating = False
Do Until strWorddatei = ""
intI = intI + 1
Application.StatusBar = "Die " & intI & ". Datei wird bearbeitet, Dateiname: " _
& strWorddatei
'Datei mit komplettem Pfad
strWorddatei = varVerzeichnis & Application.PathSeparator & strWorddatei
'Worddatei öffnen
Set wdDok = Word.Documents.Open(FileName:=strWorddatei, ReadOnly:=True)
With wdDok
lngZeile = lngZeile + 1
objWks.Cells(lngZeile, 1) = wdDok.Name
If IsDate(.FormFields("Datum").Result) Then
objWks.Cells(lngZeile, 2) = CDate(.FormFields("Datum").Result)
Else
objWks.Cells(lngZeile, 2) = .FormFields("Datum").Result
End If
objWks.Cells(lngZeile, 3) = .FormFields("Anmerkung").Result
If .FormFields("Erledigt").Result = 1 Then
objWks.Cells(lngZeile, 4) = "Ja"
Else
objWks.Cells(lngZeile, 4) = "Nein"
End If
.Close Savechanges:=False
End With
strWorddatei = Dir
Loop
Word.Application.ScreenUpdating = True
Word.Application.WindowState = wdWindowStateMinimize
Application.StatusBar = False
Application.ScreenUpdating = True
objWks.Columns(1).AutoFit
GoTo Beenden
Fehler:
Select Case Err.Number
Case 429
MsgBox "Fehler Nr. " & Err.Number & " ist aufgetretten" & vbLf & Err.Description _
& vbLf & vbLf & "Bitte Microsoft Word vor dem Starten des Makros öffnen!"
Case Else
MsgBox "Fehler Nr. " & Err.Number & " ist aufgetretten" & vbLf & Err.Description
End Select
Beenden:
Set objWb = Nothing: Set objWks = Nothing
Set wdDok = Nothing
End Sub
Häufige Fehler und Lösungen
-
Fehler beim Kompilieren, benutzerdefinierter Typ nicht definiert:
Dieser Fehler tritt auf, wenn der Verweis auf die Microsoft Word Object Library nicht aktiviert ist. Öffne den VBA-Editor, gehe zu "Extras" > "Verweise" und aktiviere die entsprechende Bibliothek.
-
Word Formular ausfüllen funktioniert nicht:
Stelle sicher, dass das Word-Dokument vor dem Ausführen des Makros geöffnet ist. Das Skript benötigt Zugriff auf das interaktive Word-Dokument.
Alternative Methoden
Wenn du keine VBA-Kenntnisse hast, kannst du auch die Daten manuell kopieren. Öffne das Word-Dokument, kopiere die Inhalte der Formularfelder und füge sie in Excel ein. Dies ist jedoch zeitaufwändiger und weniger effektiv, insbesondere bei vielen Dokumenten.
Praktische Beispiele
Hier sind einige Beispiele, wie du mit dem Makro arbeiten kannst:
-
Einfügen eines weiteren Formularfeldes:
Wenn du ein weiteres Word Formularfeld einfügen möchtest, passe die Zeilen im VBA-Code an, um die neuen Felder zu berücksichtigen.
-
Hyperlinks zu Word-Dokumenten hinzufügen:
Füge diesen Codeabschnitt hinzu, um die Dateinamen in Excel mit den entsprechenden Word-Dateien zu verlinken:
objWks.Cells.Hyperlinks.Add Anchor:=objWks.Cells(lngZeile, 1), _
Address:=.FullName
Tipps für Profis
-
Automatisierung verbessern:
Überlege, wie du die Makros weiter optimieren kannst, um den Zeitaufwand zu reduzieren, z. B. durch Batch-Verarbeitung.
-
Datenvalidierung:
Füge Validierungsprüfungen ein, um sicherzustellen, dass die Daten in den Formularfeldern korrekt sind, bevor sie in Excel übertragen werden.
FAQ: Häufige Fragen
1. Wie kann ich ein interaktives Word-Dokument erstellen?
Du kannst Formularfelder in Word einfügen, indem du die Entwicklertools aktivierst und die gewünschten Felder auswählst.
2. Kann ich mehrere Word-Dokumente gleichzeitig verarbeiten?
Ja, das Skript ist so konzipiert, dass es alle Word-Dokumente in einem angegebenen Verzeichnis verarbeitet, solange sie das richtige Format haben.
3. Was tun, wenn das Word-Dokument nicht geöffnet werden kann?
Überprüfe, ob das Dokument möglicherweise von einem anderen Benutzer bearbeitet wird oder ob es Schreibschutz hat.