bustue
Grünschnabel
Hallo Freunde,
ich habe folgendes Script zusammengeschustert:
Egal was ich mache, es kommt die Fehlermeldung Anwendung- und objektdefinierter Fehler und der Debugger hält bei 'Set matches = regex.Execute(strTXT)'
Wo könnte ich etwas ändern?
(Excel 2013, Im Anhang die Txt-Datei)
Für Eure Hilfe im Voraus dankbar
Bustue
ich habe folgendes Script zusammengeschustert:
Visual Basic:
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 -layout -nopgbrk "
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
'Abrechnungszeit auslesen
regex.Pattern = "(?<=Abrechnungszeitpunkt:)[\s]*(\d{1,2}\.\d{1,2}\.\d{1,4}|\d{1,2}\.\d{1,2})/s"
Set matches = regex.Execute(strTXT)
If matches.Count > 0 Then
rngLastRow.Cells(1, 1).Value = matches(0).submatches(0) 'Zeitraum in Spalte A speichern
End If
'Rechnungsdatum auslesen
regex.Pattern = "(?<=Rechnungsdatum)([\s]*)(\d{1,2}\.\d{1,2}\.\d{1,4}|\d{1,2}\.\d{1,2})"
Set matches = regex.Execute(strTXT)
If matches.Count > 0 Then
rngLastRow.Cells(1, 2).Value = matches(0).submatches(0) 'Rechnungsdatum in Spalte B Speichern
End If
' Rechnungsnummer auslesen
regex.Pattern = "(?<=Rechnungsnummer)([\s]*)(\d{12})"
Set matches = regex.Execute(strTXT)
If matches.Count > 0 Then
rngLastRow.Cells(1, 3).Value = matches(0).submatches(0) 'Rechnungsnummer in Spalte C Speichern
End If
' Kundennummer auslesen
regex.Pattern = "K\d{7 "
Set matches = regex.Execute(strTXT)
If matches.Count > 0 Then
rngLastRow.Cells(1, 4).Value = matches(0).submatches(0) 'Kundennummer in Spalte D Speichern
End If
' Zahlbetrag auslesen
regex.Pattern = "(?<=Zu zahlender Betrag)[\s]*((((\d+)[,.]{1,10})+\d{0,2})|(\d+(?!,))) "
Set matches = regex.Execute(strTXT)
If matches.Count > 0 Then
rngLastRow.Cells(1, 5).Value = matches(0).submatches(0) 'Kundennummer in Spalte D Speichern
End If
Set rngLastRow = rngLastRow.Offset(1, 0)
'Textdatei löschen
Kill colTFiles.Item(i)
Next
Set FSO = Nothing
Set regex = Nothing
Set WSHShell = Nothing
Set objSFold = Nothing
End Sub
Egal was ich mache, es kommt die Fehlermeldung Anwendung- und objektdefinierter Fehler und der Debugger hält bei 'Set matches = regex.Execute(strTXT)'
Wo könnte ich etwas ändern?
(Excel 2013, Im Anhang die Txt-Datei)
Für Eure Hilfe im Voraus dankbar
Bustue
Anhänge
Zuletzt bearbeitet von einem Moderator: