Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: bestimmte Zeilen aus Word-Datei auslesen - Franz

bestimmte Zeilen aus Word-Datei auslesen - Franz
05.08.2014 10:53:34
roman
Ich bedanke mich herzlich bei Franz,
der mir zu diesem Thema helfen konnte!
Das VBA-Programm kann schon fast das, was es soll! Super!
Vielen Dank nochmal!
lg roman

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: bestimmte Zeilen aus Word-Datei auslesen - Franz
07.08.2014 12:58:10
fcs
Hallo Roman,
vielen dank für die Rückmeldung.
Franz

AW: bestimmte Zeilen aus Word-Datei auslesen - Franz
11.08.2014 11:53:44
roman
Vielleicht kannst du mir da noch etwas helfen.
Programm bisher, nimmt genau den 3. Absatz und schreibt ihn in eine Zelle. Das passt schon fast.
Quelle:
(3. Absatz)
Projektnummer: PE 01-02 – Name – Ort
(4.Absatz)
Adresse: Straße 1, PLZ Ort
Ich würde gerne die Projektnummer (PE 01-02) in die 1. Spalte, Name in die 2. Spalte setzen.
Danach soll vom 4. Absatz noch die Straße mit Hausnummer in die 3. Spalte, die PLZ in die 4. Spalte und der Ort in die 5. Spalte geschrieben werden.
Da, ich nicht fähig bin das VBA Programm entsprechend umzuschreiben, bin ich auf deine Hilfe angewiesen. :-)
(Habe jetzt die Antwort-Funktion des Forums gefunden... ;-))
Vielen herzlichen Dank!
LG Roman

Anzeige
AW: bestimmte Zeilen aus Word-Datei auslesen - Franz
11.08.2014 12:56:44
fcs
Hallo Roman,
hier das Makro mit Anpassungen, um die Zeileninhalte auf verschiedene Spalten der Zeile zu verteilen.
Ich hatte etwas Probleme mit dem Bindestrich in der Zeile mit der Projektnummer im Wordtext. Das Makro sucht jetzt nach dem Minuszeichen.
Falls in deinen Wordtexten ein anderes Zeichen als Bindestrich verwendet wird, dann muss nochmals angepasst werden.
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 strText As String
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
'Worddateiname
.Cells(letztezeile, 1) = objDoc.Name
'Text aus 3. Absatz/Paragraph übernehmen
Set wdRange = objDoc.Paragraphs(3).Range
strText = wdRange.Text
'Projekt-Nummer / Name
'Ort abtrennen
strText = Trim(Left(strText, InStrRev(strText, "-") - 1))
'"Projektnummer:" abschneiden
strText = Trim(Mid(strText, Len("Projektnummer:") + 1))
.Cells(letztezeile, 2) = "'" & Trim(Left(strText, InStrRev(strText, "-") - 1)) 'Projekt- _
Nr
.Cells(letztezeile, 3) = "'" & Trim(Mid(strText, InStrRev(strText, "-") + 1)) 'Proj.-Name
'Text aus 4. Absatz/Paragraph übernehmen
Set wdRange = objDoc.Paragraphs(4).Range
strText = wdRange.Text
'"Adresse:" abschneiden
strText = Trim(Mid(strText, Len("Adresse:") + 1))
.Cells(letztezeile, 4) = "'" & Trim(Left(strText, InStr(strText, ", ") - 1)) 'Strasse
'Strasse abtrennen
strText = Trim(Mid(strText, InStr(strText, ", ") + 2))
.Cells(letztezeile, 5) = "'" & Mid(strText, 1, InStr(strText, " ") - 1) 'PLZ
.Cells(letztezeile, 6) = "'" & Mid(strText, InStr(strText, " ") + 1)  'Ort
End With 'wks
'Worddatei wieder schliessen
objDoc.Close savechanges:=False
strFileName = Dir
Loop
'Word-Anwendung beenden
objWDApp.Quit
Beenden:
End Sub

Anzeige
AW: bestimmte Zeilen aus Word-Datei auslesen - Franz
11.08.2014 13:00:12
roman
Vielen Dank für die rasche antwort! wie kann ich dir nur dafür danken?
SPITZE!
ich werde es in den nächsten tagen ausprobieren.

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

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


Schritt-für-Schritt-Anleitung

Um bestimmte Zeilen aus einer Word-Datei zu lesen und diese Daten in Excel zu übertragen, kannst du folgendes VBA-Makro verwenden. Dieses Beispiel wurde für Excel 2010 erstellt:

  1. Öffne Excel und gehe zu den Entwicklertools. Falls die Entwicklertools nicht sichtbar sind, aktiviere sie in den Excel-Optionen.

  2. Erstelle ein neues Modul:

    • Klicke auf „Visual Basic“.
    • Wähle „Einfügen“ > „Modul“.
  3. Kopiere den folgenden VBA-Code in das Modul:

    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 strText As String
       Dim letztezeile
       Dim varVerzeichnis
    
       With Application.FileDialog(msoFileDialogFolderPicker)
           .Title = "Bitte Verzeichnis mit den Worddateien auswählen"
           If .Show = -1 Then
               varVerzeichnis = .SelectedItems(1)
           Else
               Exit Sub
           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"
           Exit Sub
       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
    
               'Text aus 3. Absatz/Paragraph übernehmen
               Set wdRange = objDoc.Paragraphs(3).Range
               strText = wdRange.Text
               strText = Trim(Left(strText, InStrRev(strText, "-") - 1))
               strText = Trim(Mid(strText, Len("Projektnummer:") + 1))
               .Cells(letztezeile, 2) = "'" & Trim(Left(strText, InStrRev(strText, "-") - 1))
               .Cells(letztezeile, 3) = "'" & Trim(Mid(strText, InStrRev(strText, "-") + 1))
    
               'Text aus 4. Absatz/Paragraph übernehmen
               Set wdRange = objDoc.Paragraphs(4).Range
               strText = wdRange.Text
               strText = Trim(Mid(strText, Len("Adresse:") + 1))
               .Cells(letztezeile, 4) = "'" & Trim(Left(strText, InStr(strText, ", ") - 1))
               strText = Trim(Mid(strText, InStr(strText, ", ") + 2))
               .Cells(letztezeile, 5) = "'" & Mid(strText, 1, InStr(strText, " ") - 1)
               .Cells(letztezeile, 6) = "'" & Mid(strText, InStr(strText, " ") + 1)
           End With
           objDoc.Close savechanges:=False
           strFileName = Dir
       Loop
    
       objWDApp.Quit
    End Sub
  4. Führe das Makro aus:

    • Drücke F5 oder gehe zu „Run“ > „Run Sub/UserForm“.
    • Wähle den Ordner mit den Word-Dateien aus.

Häufige Fehler und Lösungen

  • Fehler: Keine Worddateien im gewählten Verzeichnis

    • Lösung: Vergewissere dich, dass im ausgewählten Verzeichnis tatsächlich Word-Dokumente vorhanden sind.
  • Fehler: Makro funktioniert nicht

    • Lösung: Prüfe, ob die Entwicklertools aktiviert sind und das Makro in einem allgemeinen VBA-Modul gespeichert ist.
  • Fehler: Falsche Daten in Excel

    • Lösung: Stelle sicher, dass der Text in der Word-Datei dem erwarteten Format entspricht. Möglicherweise müssen Anpassungen am VBA-Code vorgenommen werden.

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch die Funktion „Daten abrufen“ in Excel verwenden, um aus einer Word-Datei zu importieren. Diese Methode ist jedoch weniger flexibel, da sie nicht spezifisch für bestimmte Absätze ist.

  1. Gehe zu „Daten“ in Excel.
  2. Wähle „Daten abrufen“ > „Aus Datei“ > „Aus Word“.
  3. Folge den Anweisungen, um die gewünschten Daten auszuwählen.

Praktische Beispiele

Angenommen, deine Word-Datei enthält folgende Absätze:

(3. Absatz)
Projektnummer: PE 01-02 - Beispielprojekt
(4. Absatz)
Adresse: Musterstraße 1, 12345 Musterstadt

Nach Ausführung des Makros werden diese Informationen in folgende Spalten in Excel übertragen:

Dateiname Projektnummer Name Straße PLZ Ort
beispiel.docx PE 01-02 Beispielprojekt Musterstraße 1 12345 Musterstadt

Tipps für Profis

  • Automatisiere die Ausführung: Du kannst das Makro so anpassen, dass es beim Öffnen der Excel-Datei automatisch ausgeführt wird.

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um Fehler zu ignorieren und die Ausführung fortzusetzen, ohne dass Excel abstürzt.

  • Überprüfe die Zeilenanzeige in Word: Achte darauf, dass die Absätze in Word korrekt formatiert sind, um die gewünschten Zeilen auszulesen.


FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Absätze auszulesen? Du kannst die Zeilen im VBA-Code entsprechend anpassen, indem du beispielsweise objDoc.Paragraphs(5).Range für den 5. Absatz verwendest.

2. Funktioniert das Makro in Excel 365? Ja, das Makro sollte auch in Excel 365 funktionieren, solange du die entsprechenden Berechtigungen für Makros hast. Achte darauf, dass die Referenzen zu Word im VBA-Editor gesetzt sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige