Imprimer un sélection de page d'un fichier PDF
Bonjour,
J'aimerais imprimer une selection de page d'un fichier PDF à partir de VBA.
J'ai bien trouvé une commande shell qui imprime un fichier PDF :
Option Explicit
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String _
, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub ImprimerFichier()
Dim NomFichier As String
Dim x As Long
x = FindWindow("XLMAIN", Application.Caption)
NomFichier = "C:\dossier\rapport.pdf"
ShellExecute x, "print", NomFichier, "", "", 1
End Sub
Seulement ce code imprime le fichier PDF en entier, or moi je cherche à imprimer que certaines pages du document PDF.
Merci pour votre aide.
Bonjour Dawid,
Je n'aime pas utiliser les SendKeys en général, mais voici un code pour le faire
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub ImpPagePDF()
Dim AppPath As String, FilePath As String, PgeNum As Integer
Dim Clip As MSForms.DataObject, sPages As String
' Chemin d'accès à Adobe Reader
AppPath = "C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe"
' Chemin d'accès du fichier PDF
FilePath = "D:\Users\NonoZ\Documents\aspire_8930g.pdf"
' Pages à imprimer
sPages = "1;3-4"
' Mettre les pages en mémoire
Set Clip = New MSForms.DataObject
Clip.Clear
Clip.SetText sPages, 1
Clip.PutInClipboard
' Ouvrir le fichier avec l'application
Shell AppPath & " " & FilePath, vbNormalFocus
Sleep 500
' Envoyer les commandes clavier
SendKeys "^p", True
SendKeys "%g", True
SendKeys "{TAB}", True
SendKeys "^v", True
SendKeys "{ENTER}", True
Sleep 500
' Arrêter le processus Adobe Reader
KillAcrobatReader
Set Clip = Nothing
End Sub
Private Sub KillAcrobatReader()
Shell "Taskkill /im Acrobat.exe /f", 0
End Sub
A+
Merci de votre réponse. Je vais essayer et je vous tiens informé.
Cordialement
Merci pour ce code, il fonctionne mais ne rempli pas toutes mes attentes.
En effet, le fichier se trouve en réseau et est disponible à partir d'une vingtaine de machine au minimum.
bien sûr il y a un panachage des système d'exploitation, de processeurs 32 ou 64 bits et bien sûr le programme Acrobat reader ne se situe pas toujours au même emplacement.
Puisse insérer une fenêtre de consultation du fichier (dans un userform par exemple) et commander une impression par code a partir de cette fenêtre ?
Cordialement,