Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

PDF-Import mit Power Query, Anzahl Seiten ermitteln

Forumthread: PDF-Import mit Power Query, Anzahl Seiten ermitteln

PDF-Import mit Power Query, Anzahl Seiten ermitteln
12.03.2025 18:53:04
Bona
Hallo Cracks,
ich benötige für die Abarbeitung einer PDF-Datei mit Power Query (PQ) die Anzahl der Seiten der PDF-Datei. Jede Seite ist gleich aufgebaut, beim Import mit PQ wird jeweils eine Tabelle mit den Kopfzeilen und eine mit den Daten, also beträgt die Anzahl der Tabellen=Anzahl der Seiten x 2. In PQ wird ja die Anzahl der Abfragen links oben im Navigatorbereich (über der Liste der Tabellen) angezeigt. Wie kann ich diesen Wert in Excel-VBA übernehmen?

Bona
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PDF-Import mit Power Query, Anzahl Seiten ermitteln
12.03.2025 19:16:07
Yal
Hallo Bona,

idealerweise wäre diese PDF so unkritisch, dass Du es hier laden könntest. Oder Du hast eine Dummy-PDF mit genau dieselbe Struktur.

Wenn Du den PDF über Menü "Daten", "Daten abrufen", "aus Datei", "aus PDF" kommst Du auf dem Navigator, der dir die Möglichkeit gibt, eine Seite oder eine Tabelle auszuwählen. Du kannst aber auch das obere Element (definiert mit dem Dateinamen) auswählen und anschliessend nach "Kind": "Page" filtern und zählen.

Du kannst auch auf die "Kind": "Tables" filtern. Die Namen sind in der Form "Tablexxx (Page y)", was ausseinander genommen werden kann und zugeordnet, was erste und was zweite Table auf einem "Page" ist. Dann die Verarbeitung auf je eine Table und das gesamte als Function bringen.

Ein Kombinieren von VBA und PQ würde solang wie möglich vermeiden. Lieber zuerst die Möglichkeiten von PQ ausschopfen.

VG
Yal
Anzeige
Den Weg...
12.03.2025 20:03:11
Case
Moin Bona, :-)

... über PQ hat die Yal ja schon aufgezeigt. Hier eine Möglichkeit per VBA: ;-)
Option Explicit

Public Sub Main()
MsgBox "Seitenanzahl der PDF Datei = " & fncPDF("C:\Temp\12.pdf")
End Sub
Private Function fncPDF(ByVal strPath As String) As Long
Dim objRegExp As Object
Dim objPoint As Object
Dim lngFileNum As Long
Dim strText As String
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.IgnoreCase = True
.Pattern = "/Type\s*/Page\b"
lngFileNum = FreeFile
Open (strPath) For Binary As #lngFileNum
strText = Space(LOF(lngFileNum))
Get #lngFileNum, , strText
Close #lngFileNum
Set objPoint = .Execute(strText)
fncPDF = objPoint.Count
End With
End Function

Servus
Case
Anzeige
AW: Den Weg...
12.03.2025 20:18:23
Bona
Hallo Case,

danke für diesen Tip, aber in der PDF-Datei ist weder "/Type" noch "/Page" enthalten. Das hatte ich bereits probiert. DieDatei ist von PDF Version 1.6.

Hab's dann doch mit PQ gemacht, denn zum Auswerten wird sowieso PQ verwendet.

Bona
AW: PDF-Import mit Power Query, Anzahl Seiten ermitteln
12.03.2025 19:41:24
Bona
Hallo Yal,
danke für die schnelle Antwort, das mit dem Dateinamen war mir neu. Aber mit der Syntax komme ich jetzt doch nicht klar.
Pages = Table.RowCount(Table.SelectRows(Pdf.Tables([Content]), each [Kind] = "Page"))

liefert "Expression.Error"
Wie kann ich auf "Kind": "Page" oder "Kind": "Tables" filtern??
Anzeige
AW: PDF-Import mit Power Query, Anzahl Seiten ermitteln
12.03.2025 20:14:17
Bona
Sorry, stand auf'm Schaluch. Hab's gefunden, vielen Dank



let
Quelle = Pdf.Tables(File.Contents("Datei.pdf"), [Implementation="1.3"]),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each ([Kind] = "Page")),
Pages = List.NonNullCount(#"Gefilterte Zeilen"[Kind])
in
Pages


Bona
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige