Bonjour,
Je souhaite réaliser un sommaire pour un dossier composé de plusieurs PDF.
Je souhaite donc utiliser une macro qui m'affiche le nombre de page de chaque PDF.
Exemple :
Fichier Nombre de pages a.pdf 2 b.pdf 1 c.pdf 4
Quand je teste mon code avec deux fichiers importer simplement il fonctionne, mais dès lors que je l'exécute sur un tableau croisé dynamique créé à l'aide d'une base de données importée, il y a l'erreur : "Nom de fichier ou numéro incorrect (Erreur 52)" (sur la ligne 7).
Quelqu'un a t-il déjà eu un problème de ce genre? Ou sait où pourrais se trouver mon erreur?
Les liens sont dans la colonne D et je souhaite avoir le nombre de pages dans la colonne E
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Option Explicit Sub pagination() Dim MyPath As String, MyFile As String Dim i As Long MyPath = "\\192.168.1.5\commun\...\dossier" MyFile = Dir(MyPath & Application.PathSeparator & "*.pdf", vbDirectory) Range("E").ClearContents Range("D3") = "File Name": Range("E3") = "Pages" Range("D3:E3").Font.Bold = True i = 3 Do While MyFile <> "" i = i + 1 Range("D" & i) = MyFile Range("E" & i) = GetPageNum(MyPath & Application.PathSeparator & MyFile) MyFile = Dir Loop Columns("D:E").AutoFit MsgBox "Total of " & i - 1 & " PDF files have been found" & vbCrLf _ & " File names and corresponding count of pages have been written on " _ & ActiveSheet.Name, vbInformation, "Report..." End Sub Function GetPageNum(PDF_File As String) 'Haluk 19/10/2008 Dim FileNum As Long Dim strRetVal As String Dim RegExp Set RegExp = CreateObject("VBscript.RegExp") RegExp.Global = True RegExp.Pattern = "/Type\s*/Page[^s]" FileNum = FreeFile Open PDF_File For Binary As #FileNum strRetVal = Space(LOF(FileNum)) Get #FileNum, , strRetVal Close #FileNum GetPageNum = RegExp.Execute(strRetVal).Count End Function
Partager