ich muss immer wieder PDF-Seiten importieren und entsprechend anpassen. Nun habe ich den Import schon soweit automatisiert, dass ich die Tabellen aus dem PDF weiterverarbeiten kann. Leider laufe ich mit unter auf das Problem, dass die PDF´s unterschiedliche Seitenzahlen haben. Ich möchte jetzt den Import so anpassen, dass dieser pro gefundener Seite einmal durchläuft und mir die entsprechende Seite importiert.
Dies ist mein aktueller Code, zum testen. Hier habe ich aber Fehler beim setzen der Variablen drin und weiß nicht wo und wie ich die Seitenzahl übergeben kann:
Sub PDF_Import_Mehrere_Seite()
Dim strDatei As String
Dim strDateiUndPfad As String
Dim objQR As Object
Dim rngZelle As Range
Dim intSpalteArtikelNrPDF As Integer
Dim strArtikelNrPDF As String
Dim intZeileMaxBasisTabelle As Integer
Dim intZeilePOS As Integer
Dim intZählerPOS As Integer
Dim strSeitenZähler As String
Dim intSeitenZähler As Integer
strDateiUndPfad = Application.GetOpenFilename("PDF Dateien (*.pdf), *.pdf", Title:="Bitte wählen Sie die Import-Datei aus.")
If strDateiUndPfad Like "*pdf*" Then
strDatei = strDateiUndPfad
strPfad = Left(strDateiUndPfad, InStrRev(strDateiUndPfad, "\"))
Else
MsgBox "Es wurde keine gültige PDF Datei ausgewählt!"
End
End If
Workbooks.Add
Set wbkNeueStückliste = ActiveWorkbook
Set wshStücklisteBasis = ActiveSheet
wshListeBasis.Name = "Basis_Import"
For intSeitenZähler = 1 To 4 'nur zum Testen fest. Ansonsten über ausgelesene Seitenzahl
strSeitenZähler = Format(intSeitenZähler, "000")
'Merker:
'Im Moment bezieht sich alles auf die erste Seite
'Hier muss die Page angepasst werden
ActiveWorkbook.Queries.Add Name:="Page" & strSeitenZähler, Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Quelle = Pdf.Tables(File.Contents(""" & strDateiUndPfad & """), [Implementation=""1.3""])," & Chr(13) & "" & Chr(10) & " Page1 = Quelle{[Id=""Page""" & strSeitenZähler & """]}[Data]," & Chr(13) & "" & Chr(10) & " Oberste4ZeilenEntfernen = Table.Skip(Page1,4)," & Chr(13) & "" & Chr(10) & " ÜberschriftErsteZeile = Table.PromoteHeaders(Oberste4ZeilenEntfernen, [PromoteAllScalars" & _
"=true])" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " ÜberschriftErsteZeile" & ""
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 [Page" & strSeitenZähler & "]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Page" & strSeitenZähler
.Refresh BackgroundQuery:=False
End With
Next intSeitenZähler
End Sub
Ich hoffe Ihr könnt mir helfen. Die Seitenzahl wird über ein weiteres Makro ausgelesen. Der Import soll nun Seite für Seite importieren. Danach komme ich selbst weiter. Vorab schon besten Dank und viele Grüße Jürgen