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

bestimmte Zeilen aus Word-Datei auslesen

Forumthread: bestimmte Zeilen aus Word-Datei auslesen

bestimmte Zeilen aus Word-Datei auslesen
29.07.2014 10:46:13
roman

Es gab zwar schon einen Beitrag dazu, jedoch brauche ich eine Copy-Paste-Variante des Programmtextes, da ich mich zu wenig mit VBA auskenne.
Meine Problemstellung:
Es soll aus ca. 200 einseitigen gleich aufgebauten Word Dateien (alle im selben Verzeichnis) ein Absatz ausgelesen und untereinander in einer Excel Datei aufgelistet werden.
Funktioniert das ganze so, dass ich das Makro in Excel erstelle?

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Zeilen aus Word-Datei auslesen
29.07.2014 16:05:27
fcs
Hallo Roman,
die Erstellung der Liste aus Excel heraus ist möglich.
Aber muss es unbedingt per Copy und Paste sein? "Einfach" den Text nach Excel in eine Zelle übernehmen ist einfacher.
Nachfolgend das Gerüst eines Makros.
Es sind 2 Varianten einegebaut, die du über die Goto ... Zeilen steuern/anpassen kannst.
Variante1: Es wird der X-te Absatz/Paragraph kopiert - in meinem Beispiel der 3. Absatz.
Variante2: Es wird ein bestimmtes Wort gesucht. Der zu kopierende Word-Text wird auf den gesamten Absatz mit der Fundstelle erweitert.
Gruß
Franz
'Erstellt unter MS Office 2010
'Code in einem allgemeinen VBA-Modul der Exceldatei
Sub Hole_Wordtexte()
Dim strFileName As String
Dim objWDApp As Object 'Word.Application
Dim objDoc As Object  'Word.Document
Dim wdRange As Object ' Word.Range
Dim wks As Worksheet
Dim letztezeile
Dim varVerzeichnis
'On Error Resume Next
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Verzeichnis mit den Worddateien auswählen"
If .Show = -1 Then
varVerzeichnis = .SelectedItems(1)
Else
GoTo Beenden
End If
End With
Set wks = ActiveSheet
With wks
letztezeile = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
strFileName = Dir(varVerzeichnis & "\" & "*.doc")
If strFileName  "" Then
Set objWDApp = CreateObject("Word.Application")
objWDApp.Visible = True
Else
MsgBox "Keine Worddateien im gewählten Verzeichnis"
GoTo Beenden
End If
Do Until strFileName = ""
'Worddatei schreibgeschützt öffnen
Set objDoc = objWDApp.Documents.Open(varVerzeichnis & "\" & strFileName, _
ReadOnly:=True)
'nächste freie Zeile Zeile in Excelblatt in Spalte B
With wks
letztezeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Cells(letztezeile, 1) = objDoc.Name
GoTo Weiter_Suchen
'3. Absatz/Paragraph = zu kopierendes Word-Objekt
Set wdRange = objDoc.Paragraphs(3).Range
GoTo Weiter01:
Weiter_Suchen:
'zu kopierendes Wordobjekt via Suchfunktion bestimmen
Set wdRange = objDoc.Content
wdRange.Find.ClearFormatting
wdRange.Find.Execute Findtext:="Copy:", Forward:=True      'Suchtext anpassen!!
If wdRange.Find.Found = True Then
'Fundstelle auf den gesamten Absatz erweitern
wdRange.Expand 4 ' 4 = wdParagraph
If wdRange.End = objDoc.Content.End Then
'Fundstelle ist im letzten Absatz des Worddokuments
Set wdRange = objDoc.Range( _
Start:=objDoc.Paragraphs(objDoc.Paragraphs.Count - 1).Range.End, _
End:=objDoc.Content.End - 1)
End If
Else
Set wdRange = Nothing
End If
Weiter01:
If wdRange Is Nothing Then
.Cells(letztezeile, 2).Value = "Suchebegriff nicht gefunden"
Else
'GoTo Weiter02:
'Word-Range kopieren und in Excel einfügen
wdRange.Copy
.Cells(letztezeile, 2).Select
.Paste
GoTo Weiter03:
Weiter02:
'Alternative: Text des Word-Range-Opjektes direkt in Excelzelle einfügen.
.Cells(letztezeile, 2) = wdRange.Text
Weiter03:
End If
End With 'wks
'Worddatei wieder schliessen
objDoc.Close savechanges:=False
strFileName = Dir
Loop
'Word-Anwendung beenden
objWDApp.Quit
Beenden:
End Sub

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zeilen aus Word-Datei auslesen und in Excel übertragen


Schritt-für-Schritt-Anleitung

Um bestimmte Zeilen aus Word-Dateien auszulesen und in eine Excel-Tabelle zu übertragen, kannst Du das folgende VBA-Makro verwenden. Diese Anleitung basiert auf der Verwendung von MS Office 2010.

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste im Projekt-Explorer und wähle Einfügen -> Modul.
  4. Kopiere den folgenden VBA-Code in das Modul:
'Erstellt unter MS Office 2010
Sub Hole_Wordtexte()
    Dim strFileName As String
    Dim objWDApp As Object 'Word.Application
    Dim objDoc As Object  'Word.Document
    Dim wdRange As Object ' Word.Range
    Dim wks As Worksheet
    Dim letztezeile
    Dim varVerzeichnis

    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Bitte Verzeichnis mit den Worddateien auswählen"
        If .Show = -1 Then
            varVerzeichnis = .SelectedItems(1)
        Else
            GoTo Beenden
        End If
    End With

    Set wks = ActiveSheet
    With wks
        letztezeile = .Cells(.Rows.Count, 1).End(xlUp).Row
    End With

    strFileName = Dir(varVerzeichnis & "\" & "*.doc")
    If strFileName <> "" Then
        Set objWDApp = CreateObject("Word.Application")
        objWDApp.Visible = True
    Else
        MsgBox "Keine Worddateien im gewählten Verzeichnis"
        GoTo Beenden
    End If

    Do Until strFileName = ""
        Set objDoc = objWDApp.Documents.Open(varVerzeichnis & "\" & strFileName, ReadOnly:=True)

        With wks
            letztezeile = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
            .Cells(letztezeile, 1) = objDoc.Name

            Set wdRange = objDoc.Paragraphs(3).Range '3. Absatz kopieren
            wdRange.Copy
            .Cells(letztezeile, 2).Select
            .Paste
        End With

        objDoc.Close savechanges:=False
        strFileName = Dir
    Loop

    objWDApp.Quit
Beenden:
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus: Drücke ALT + F8, wähle Hole_Wordtexte aus und klicke auf Ausführen. Wähle das Verzeichnis mit Deinen Word-Dateien aus.

Häufige Fehler und Lösungen

  • Fehler: "Keine Worddateien im gewählten Verzeichnis"

    • Lösung: Stelle sicher, dass im gewählten Verzeichnis tatsächlich Word-Dokumente vorhanden sind und dass der Dateityp korrekt ist (z.B. .doc).
  • Fehler: "Suchebegriff nicht gefunden"

    • Lösung: Überprüfe den Suchtext im Code und stelle sicher, dass das Wort, das Du suchst, tatsächlich im Dokument enthalten ist.

Alternative Methoden

Eine Alternative zum Auslesen von Daten aus Word-Dokumenten ist die Verwendung von Power Query in Excel. Damit kannst Du Daten aus verschiedenen Quellen importieren und transformieren, ohne VBA verwenden zu müssen. Dies ist besonders nützlich, wenn Du regelmäßig aktualisierte Daten benötigst.


Praktische Beispiele

Angenommen, Du hast 200 Word-Dokumente, in denen die gewünschten Daten in verschiedenen Absätzen stehen. Mit dem oben beschriebenen VBA-Code kannst Du den dritten Absatz jedes Dokuments kopieren und in eine Excel-Tabelle einfügen. Du kannst den Code anpassen, um andere Absätze zu kopieren oder spezifische Suchbegriffe zu verwenden.


Tipps für Profis

  • Verwende Variablen: Um den Code flexibler zu gestalten, könntest Du Variablen für den Absatz-Index oder den Suchtext verwenden. Dadurch kannst Du den Code einfacher anpassen, ohne ihn jedes Mal manuell zu ändern.

  • Makros optimieren: Achte darauf, dass Du den Code effizient schreibst, insbesondere wenn Du mit vielen Dokumenten arbeitest. Das Schließen von Word-Anwendungen und Dokumenten sollte immer in der richtigen Reihenfolge erfolgen.


FAQ: Häufige Fragen

1. Kann ich auch mehrere Absätze gleichzeitig kopieren?
Ja, Du kannst den Code so anpassen, dass er mehrere Absätze in einer Schleife durchläuft und diese in Excel einfügt.

2. Welche Excel-Version wird benötigt?
Das Makro wurde unter MS Office 2010 erstellt, sollte aber auch in neueren Versionen funktionieren. Stelle sicher, dass VBA in Deiner Version aktiviert ist.

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