julian8990
Goto Top

PDF Datei auslesen und per VBA in Excel schreiben

Hallo zusammen!

Ich bin auf folgenden Threat gestoßen, und konnte auch schon einige Erfolge erzielen!
Mein Problem ist ein ähnliches, und bin noch ziemlich neu in der Welt des VBA face-smile
Aus Google bin ich leider nicht schlauer geworden..
Ich habe wie im Threat erläutert per pdf2text eine Text Datei ausgegeben,
diese wird nach dem gesuchten Wort durchsucht und gibt den Wert der dahinter steht aus.
In meinem Fall versuche ich die Daten aus einem PDF Plan auszugeben.
Meine Frage dazu ist:
- Wie kann ich den Wert des Planinhalts also in diesem Fall das Ergebnis "Übersichtslageplan" ausgeben lassen?

Ich habe es mal so versucht wie ich es konnte, bin aber ziemlich unzufrieden damit face-sad

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
Sub PDF2Excel()
    Dim i As Integer
    Dim strCMDLine As String, strTXT As String
    Dim FSO As Object, objSFold As Object, objWks As Object, WSHShell As Object, file As Object, rngLastRow As Range
    Dim colPFiles As New Collection, colTFiles As New Collection, regex As Object
    
    Set WSHShell = CreateObject("WScript.Shell")  
    Set FSO = CreateObject("Scripting.FileSystemObject")  
    Set regex = CreateObject("vbscript.regexp")  
    regex.MultiLine = True
    Set objSFold = FSO.GetFolder(ThisWorkbook.Path)
    
    strCMDLine = """" & ThisWorkbook.Path & "\pdftotext.exe""  -raw -nopgbrk -l 2 "  
        
    For Each file In objSFold.Files                                  ' alle Dateien einlesen  
        If Right(file.Path, 4) = ".pdf" Then colPFiles.Add file.Path  ' nur *.pdf  
    Next
    
    For i = 1 To colPFiles.Count
         WSHShell.Run strCMDLine & """" & colPFiles.Item(i) & """", 0, True  
    Next
    
    For Each file In objSFold.Files                                  ' wieder alles einlesen  
        If Right(file.Path, 4) = ".txt" Then colTFiles.Add file.Path  ' nur *.txt  
    Next
    
    Set objWks = Worksheets(1)
    Set rngLastRow = objWks.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    
    For i = 1 To colTFiles.Count
        strTXT = FSO.OpenTextFile(colTFiles.Item(i)).ReadAll
        
        'Plannummer auslesen  
        regex.Pattern = "^Plannummer([^\r\n]+)"  
        Set matches = regex.Execute(strTXT)
        If matches.Count > 0 Then
            rngLastRow.Cells(1, 1).Value = matches(0).submatches(0) 'Plannummer in Spalte A Speichern  
        End If
        
        ' Maßstab auslesen  
        regex.Pattern = "^1: |^1 :([^\r\n]+)"  
        Set matches = regex.Execute(strTXT)
        If matches.Count > 0 Then
            rngLastRow.Cells(1, 2).Value = matches(0).submatches(0)      'Maßstab in Spalte B Speichern  
        End If
        
         ' Planinhalt auslesen  
        regex.Pattern = "^Planinhalt([^\r\n]+)"  
        Set matches = regex.Execute(strTXT)
        If matches.Count > 0 Then
            rngLastRow.Cells(1, 3).Value = matches(0).submatches(0)      'Planinhalt in Spalte C Speichern  
        End If
        
        Set rngLastRow = rngLastRow.Offset(1, 0)
        'Textdatei löschen  
      
    Next
    Set FSO = Nothing
    Set regex = Nothing
    Set WSHShell = Nothing
    Set objSFold = Nothing
End Sub

Die txt Datei habe ich mal ein bisschen gekürzt, aber sieht in etwa folgender Maßen aus:

Ausführungsplanung
Übersichtslageplan
Planart
Plannummer B0100212_001e
Lageplan
xxxx i.V.
1 : 1000
xxx
xxx
März 15
März 15
53
1431
2,631


Ich benutze das ganze auf einem Win7 mit Excel 2010
Hoffentlich versteht ihr mein Problem und könnt mir helfen!! =)

Content-Key: 302274

Url: https://administrator.de/contentid/302274

Printed on: April 26, 2024 at 15:04 o'clock

Member: Clijsters
Clijsters Apr 20, 2016 at 07:54:19 (UTC)
Goto Top
Hallo!

leider werde ich aus deiner Frage nicht ganz schlau.

Zitat von @Julian8990:
In meinem Fall versuche ich die Daten aus einem PDF Plan auszugeben.
Meine Frage dazu ist:
- Wie kann ich den Wert des Planinhalts also in diesem Fall das Ergebnis "Übersichtslageplan" ausgeben lassen?
Gegenfrage: Wie sieht ein solcher "Plan" denn aus? "Übersichtslageplan"?
Ich habe es mal so versucht wie ich es konnte, bin aber ziemlich unzufrieden damit face-sad
Da wären auch noch ein paar andere Kleinigkeiten; dazu später mehr.
Ich benutze das ganze auf einem Win7 mit Excel 2010
Hoffentlich versteht ihr mein Problem und könnt mir helfen!! =)
Nein, ehrlich gesagt nur minder.
Vielleicht hängst du mal ein Beispiel des Lageplans an?

Bitte beschreibe in Ruhe, was du eingibst, was du als Ausgabe erwartest und was du stattdessen erhältst.
Danke.

Beste Grüße
Dominique
Mitglied: 114757
Solution 114757 Apr 20, 2016 at 10:09:13 (UTC)
Goto Top
Wie kann ich den Wert des Planinhalts also in diesem Fall das Ergebnis "Übersichtslageplan" ausgeben lassen?
Regex
Ausführungsplanung\s+(^[^\r\n]+)
Gruß jodel32
Member: Julian8990
Julian8990 Apr 20, 2016 at 21:42:30 (UTC)
Goto Top
Super danke!!!!!
Vielen Dank für die schnellen Antworten
Genau danach habe ich gesucht =)

Schönen Gruß

Julian