ich möchte Daten aus einem PDF in Excel importieren, das klappt auch soweit. Allerdings wird hier im Code (Großteil über den recorder) direkt der Dateiname verwendet:
ActiveWorkbook.Queries.Add Name:="Page001", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Pdf.Tables(File.Contents(""C:\Downloads\9c43638c-ae8a-4a63-9864-bf243c26528a.pdf""), [Implementation=""1.3""])," & Chr(13) & "" & Chr(10) & " Page1 = Quelle{[Id=""Page001""]}[Data]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Page1,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}, {""Column4"", type text}})" & Chr(13) & "" & _
"" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Page001"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Page001]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Page001"
.Refresh BackgroundQuery:=False
End With
Nun ändert sich aber immer der Dateiname und auch der Pfad. Daher möchte ich, dass die Nutzer die PDF auswählen, speichere die Angabe als Variable und möchte diese öffnen. Mit der Variable result liefert er mir auch den Pfad C:\Downloads\9c43638c-ae8a-4a63-9864-bf243c26528a.pdf nur leider werden die Daten nicht importiert mit dem Laufzeitfehler '1004': "[DataFormat.Error] Der angegebene Dateipfad muss ein gültiger absoluter Pfad sein." Sieht jemand meinen Fehler oder hat eine andere Idee, wie sich das umsetzen lässt?
' Datei auswählen
Dim wb As Workbook, result As Variant
result = Application.GetOpenFilename(FileFilter:="PDF-Dateien(*.pdf),*.pdf", Title:="Bitte Datei auswählen.")
' Daten importieren
ActiveWorkbook.Queries.Add Name:="Page001", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Pdf.Tables(File.Contents("" & result & ""), [Implementation=""1.3""])," & Chr(13) & "" & Chr(10) & " Page1 = Quelle{[Id=""Page001""]}[Data]," & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"" = Table.TransformColumnTypes(Page1,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", type text}, {""Column4"", type text}})" & Chr(13) & "" & _
"" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Geänderter Typ"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Page001"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Page001]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Page001"
.Refresh BackgroundQuery:=False
End With
Vielen Dank vorab und liebe Grüße
Lukas