-VBA- Impression d'une page précise d'un fichier PDF

waldorf

XLDnaute Nouveau
Bonsoir,
J'aimerais passer par Excel pour imprimer certaines pages d'une liste de fichiers PDF. Je dispose pour cela d'un tableau à deux colonnes (chemin_pdf | page_a_imprimer)

Jusqu'à présent je n'ai réussi que deux choses (cf. code ci-dessous):
1) Imprimer le pdf dans sa gloablité
2) Ouvrir le fichier pdf à l'aide d'Acrobat à une page précise
:) J'aimerais faire les deux !
Merci pour vos réponses! Bonne soirée.

Mon code pour le 1)
Code:
Sub Ouvre_PDF()
Dim NomFichier
   NomFichier = "F:\[...].pdf"
   If Dir(NomFichier) <> "" Then
     ShellExecute 0, "print", NomFichier, "", "", 0
   Else
     MsgBox "Chemin ou fichier introuvable."
   End If
End Sub

Mon code pour le 2)
Code:
Public Sub Open_PDF_At_Page()

    Dim sPDFfile As String
    Dim sAdobeCommand As String
    Const cAdobeReaderExe As String = "C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"
    
    sPDFfile = "F:\[...].pdf"
    
    sAdobeCommand = " /a ""page=10=Open Actions"" "
    
    Shell cAdobeReaderExe & sAdobeCommand & Chr(34) & sPDFfile & Chr(34), vbNormal

End Sub
 

thom07lamy

XLDnaute Nouveau
Re : -VBA- Impression d'une page précise d'un fichier PDF

Salut,
j'ai eu la même problématique que toi un peu auparavant.

En fait, tu avais quasiment terminé. Le hic avec la solution que je te propose, c'est que j'utilise du SendKeys, tu vas comprendre en voyant le code ci-dessous:
Code:
Set PDFExec = WshShell.Exec(CheminReader & " /p /a page=" & NumPage & "=OpenActions " & CheminPDF)

Application.Wait (Now + TimeValue("0:00:05"))
    'Séquence de SendKeys pour sélectionner l'impression de la page active
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{DOWN}", True
    'Séquence de SendKeys pour démarrer l'impression
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{TAB}", True
    SendKeys "{ENTER}", True

L'argument /p dans le ShellExec ouvre la fenêtre d'impression d'Adobe Reader, et de là tu n'as plus qu'à voir les envois de touche dont tu as besoin.

Je suis conscient que ce n'est pas une solution stable (d'ailleurs, un utilisateur a installé récemment une autre version, et du coup ça ne fonctionne plus pour lui). En plus, ça fonctionne avec Adobe Reader 9.0 uniquement (les versions antérieures n'autorisent pas les arguments dont tu as besoin.

Il y a bien une autre solution: utiliser la SDK Adobe, qui est spécialement conçue pour piloter Adobe Reader, mais il faut que tu aies la version Pro et pas simplement le Reader pour chacun des postes où ta macro doit tourner.

J'espère que ça pourra t'aider.
 

Discussions similaires

Réponses
1
Affichages
1 K
Compte Supprimé 979
C

Statistiques des forums

Discussions
314 629
Messages
2 111 351
Membres
111 111
dernier inscrit
houndemint