Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten aus Word Formularfeld in Excel

Daten aus Word Formularfeld in Excel
15.05.2008 11:31:47
Rainer
Hallo,
ich stehe vor folgendes Problem:
In einem Verzeichnis befinden sich viele Word-Dokumente. In diesen Worddokumenten sind Grafiken, Tabellen und Text enthalten. In jedem Worddokument habe ich Formularfelder eingefügt, in die andere Mitarbeiter jeweils das Datum und Anmerkungen eintragen. Ein zusätzliches Formular-Kontrollkästchen wird angeklickt, wenn das Dokument fertig erstellt ist.
Ich möchte mir nun einen Überblick über die Daten mittels Excel schaffen. dazu möchte ich alle Worddokumente bzw. den Inhalt der Formularfelder auslesen.
Die Excel-Datei soll nach Durchlauf des Makros in etwa folgenden Aufbau haben:
Dateiname(nur Name keinPfad) der Worddatei;Datum aus Formularfeld;Anmerkungen aus Formularfeld;Fertig(ja/nein)aus Formularfeld;
Kann man so eine Übersicht mit Hilfe eines Makros erstellen?
Vielen Dank im voraus
Rainer

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Word Formularfeld in Excel
15.05.2008 20:43:25
fcs
Hallo Rainer,
hier mein Vorschlag. Es funktioniert wenn alle Formulardateien in einem Verzeichnis liegen und keine weiteren Word (*.doc) -Dateien im Verzeichnis sind. Falls du über den Namen excakt filtern kannst (z.B Form*.doc), dann könne auch weiter Worddateien im Verzeichnis sein.
Im makro muss du die Namen der Formularfelder anpassen und ggf. den Filter für die Word-Dateien.
Gruß
Franz

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, _
hier kann natürlich auch ein vorhandenens Blatt gesetzt werden
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) 'Datum
Else
objWks.Cells(lngZeile, 2) = .FormFields("Datum").Result
End If
objWks.Cells(lngZeile, 3) = .FormFields("Anmerkung").Result 'Anmerkung
'Checkbox auswerten
If .FormFields("Erledigt").Result = 1 Then 'Erledigt
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
'Breite Spalte A anpassen
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


Anzeige
AW: Daten aus Word Formularfeld in Excel
16.05.2008 08:16:00
Rainer
Hallo Franz,
vielen Dank für die Rückmeldung. Ich erhalte allerding beim Start des Makros die Fehlermeldung "Fehler beim Kompilieren, benutzerdefinierter Typ nicht definiert". Die Zeile "Dim wdDok As Word.Document, strWorddatei As String" ist dann markiert.
Liegt das an der Excelversion oder habe ich etwas falsch gemacht?
Gruß
Rainer

Anzeige
AW: Daten aus Word Formularfeld in Excel
16.05.2008 13:42:00
fcs
Hallo Rainer,
lies mal die 3. und 4. Zeile meines Codes durch.
Wahrscheinlich hast du im VBA-Editor für die Datei in der der Code steht den Verweis auf die Microsoft Word x.y Object Library noch nicht gesetzt. Diese ist in Excel standardmäßig nicht gesetzt.
Gruß
Franz

Anzeige
AW: Daten aus Word Formularfeld in Excel
16.05.2008 22:16:58
Rainer
Hallo Franz,
deine Vermutung war ein Volltreffer! Danke noch mal für den Hinweis!
Das Makro funktioniert prima.
Beim Testen ist mir noch eine Idee gekommen. Besteht die Möglichkeit die einzelnen Dateinamen in der ersten Spalte mit den entsprechenden Worddateien per Hyperlink zu "verlinken", so dass die entsprechenden Worddateien beim Anklicken automatisch in Word geöffnet werden?
Gruß
Rainer

Anzeige
AW: Daten aus Word Formularfeld in Excel
17.05.2008 03:46:43
fcs
Hallo Rainer,
für die Hyperlinks muss du eine weitere Befehlszeile einfügen.
Hier der entsprechende Codeabschnitt:

With wdDok
lngZeile = lngZeile + 1
objWks.Cells(lngZeile, 1) = wdDok.Name
objWks.Cells.Hyperlinks.Add Anchor:=objWks.Cells(lngZeile, 1), _
Address:=.FullName
If IsDate(.FormFields("Datum").Result) Then


Gruß
Franz

Anzeige
AW: Daten aus Word Formularfeld in Excel
17.05.2008 21:59:20
Rainer
Hallo Franz,
einfach genial!
Vielen Dank!! Du hast mir sehr geholfen.
Gruß
Rainer
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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:

  1. 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.

  2. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige