im Rahmen einer Research-Arbeit für meine Abschlussarbeit muss ich auf Basis von Schlagwörtern Textstellen von Worddokumenten in eine Exceldatei übertragen.
Es handelt sich um eine Liste von Schlagwörtern (alle in einer Excelspalte untereinander aufgelistet) und um mehre Worddokumente (ca. 80-100 mit jeweils 400 Seiten).
Das Programm soll das Worddokument nach den Schlagwörtern durchsuchen und falls ein Wort gefunden wird, soll das entsprechende Wort + 350 Zeichen vor und nach dem Wort in eine Excelzeile kopieren. Zusätzlich sollen der Name des Dokuments und die Seitenzahl übernommen werden. Jede Fundstelle soll in eine neue Zeile kopiert werden.
Auf Basis erster Recherchen bei Google habe ich folgenden Code erhalten. Mit dem Code funktioniert schon das meiste. Jedoch fehlt die Abarbeitung aller Dokumente in einer Schleife.
Bei dem Versuch die Schleife zu bauen komme ich leider nicht weiter. Habt ihr eine Idee / Lösung dafür?
Des weiteren schaffe ich es noch nicht die 350 Zeichen vor und nach dem Suchwort zu kopieren. Über Ideen / Lösungsvorschläge würde ich mich sehr freuen.
Funktionierender Code (von www.exceltrainingvideos.com)
Sub LocateSearchItem()
Dim shtSearchItem As Worksheet
Dim shtExtract As Worksheet
Dim oWord As Word.Application
Dim WordNotOpen As Boolean
Dim oDoc As Word.Document
Dim oRange As Word.Range
Dim LastRow As Long ' last row with data in shtSearchItem
Dim CurrRowShtSearchItem As Long ' current row in shtSearchItem
Dim CurrRowShtExtract As Long ' current row in shtExtract
Dim myPara As Long
On Error Resume Next
Set oWord = GetObject(, "Word.Application")
If Err Then
Set oWord = New Word.Application
WordNotOpen = True
End If
On Error GoTo Err_Handler
oWord.Visible = True
oWord.Activate
Set oDoc = oWord.Documents.Open("C:\Users\Lenovo\Downloads\Data fronm Word to Excel\ _
Testdatei.docx") '
Idee für die Schleife zur Abarbeitung aller Worddokumente:Sub Schleife()
Dim sPfad As String
Dim sDatei As String
Dim oDocument As Object
Application.ScreenUpdating = False
sPfad = "C:\TEST\Sammlung\"
sDatei = Dir(CStr(sPfad & "*.do*")) 'Alle Word Dateien im Verzeichnis
Do While sDatei ""
Set oDocument = Documents.Open(sPfad & sDatei, , False)
........ .......
'die nächste Datei bitte...
sDatei = Dir()
Loop
Set oDocument = Nothing
Application.ScreenUpdating = True
End Sub