Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Daten aus Word Formularfeld in Excel

Betrifft: Daten aus Word Formularfeld in Excel von: Rainer
Geschrieben am: 15.05.2008 11:31:47

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

  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: fcs
Geschrieben am: 15.05.2008 20:43:25

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




  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: Rainer
Geschrieben am: 16.05.2008 08:16:10

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


  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: fcs
Geschrieben am: 16.05.2008 13:42:34

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


  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: Rainer
Geschrieben am: 16.05.2008 22:16:58

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


  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: fcs
Geschrieben am: 17.05.2008 03:46:43

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


  

Betrifft: AW: Daten aus Word Formularfeld in Excel von: Rainer
Geschrieben am: 17.05.2008 21:59:20

Hallo Franz,

einfach genial!

Vielen Dank!! Du hast mir sehr geholfen.

Gruß
Rainer


 

Beiträge aus den Excel-Beispielen zum Thema "Daten aus Word Formularfeld in Excel"