Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1844to1848
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PDF importieren mit variablem Bezug

PDF importieren mit variablem Bezug
20.08.2021 16:05:59
Lukas
Hallo,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF importieren mit variablem Bezug
20.08.2021 17:08:15
ChrisL
Hi Lukas
Aus dem holen Bauch heraus würde ich vermuten, dass es 3 Gänsefüsse braucht.
...File.Contents(""" & result & """)...
cu
Chris
AW: PDF importieren mit variablem Bezug
20.08.2021 17:22:41
Lukas
Hallo Chris,
super hat geklappt, danke! Es sind immer solche Kleinigkeiten :D
Schönes Wochenende
Lukas
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige