Idée pour créer un fichier PDF depuis PDF CREATOR

lodam

XLDnaute Occasionnel
Bonjour à toutes et à tous

Pour celles et ceux qui cherchent à créer un pdf depuis leur classeur excel, le gros problème avec pdf creator est que l'on a

-soit à l'impressionla fenêtre qui s'affiche pour saisir le nom et le répertoire de destination pour l'enregistrement (ce qu'on veut éviter)

-soit la possibilité de faire une sauvegarde automatique mais sans possibilité de personnaliser le nom du fichier

Et c'est là que j'ai découvert une fonction NAME bien pratique peut être...
Je ne peux pas tester depuis le boulot mais je vais me pencher dessus ce soir et ce WE. Je donne les éléments de réflexion pour ceux qui peuvent faire le test.

a) Il faut que PDF creator soit installé
b) il faut qu'il soit paramétré pour faire une sauvegarde automatique : dans un dossier et sous le même nom
c) depuis excel, on imprime avec l'imprimant pdfcreator
d) puis on renomme

A tester donc :
---------------------------------
sub test()
Dim OldName, NewName

OldName = "C:\repertoire_de_creation_du_pdf_avec_pdfcreator\ANCFICH.pdf":NewName = "C:\bon_repertoire_de_destination\le_bon_nom_du_fichier.pdf"
Name OldName As NewName ' Déplace et renomme le fichier.
msgbox "Traitement réalisé", vbinformation
end sub
 

Creepy

XLDnaute Accro
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

Bonjour le Forum, Lodam,

Pas besoin de réinventer la roue, à moins que ce soit pour ta curiosité intellectuelle ou le plaisir de coder.

Code:
Sub PrintToPDF_Early()
'Author       : Ken Puls ([url=http://www.excelguru.ca]Excelguru.ca | Tips and pointers for Excel and other MS Office applications[/url])
'Macro Purpose: Print to PDF file using PDFCreator
'   (Download from [url=http://sourceforge.net/projects/pdfcreator/]SourceForge.net: PDFCreator[/url])
'   Designed for early bind, set reference to PDFCreator
    Dim pdfjob As PDFCreator.clsPDFCreator
    Dim sPDFName As String
    Dim sPDFPath As String
    '/// Change the output file name here! ///
    sPDFName = "testPDF.pdf"
    sPDFPath = ActiveWorkbook.Path & Application.PathSeparator
    'Check if worksheet is empty and exit if so
    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
    Set pdfjob = New PDFCreator.clsPDFCreator
    With pdfjob
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Can't initialize PDFCreator.", vbCritical + _
                    vbOKOnly, "PrtPDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sPDFPath
        .cOption("AutosaveFilename") = sPDFName
        .cOption("AutosaveFormat") = 0    ' 0 = PDF
        .cClearCache
    End With
    'Print the document to PDF
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
    'Wait until the print job has entered the print queue
    Do Until pdfjob.cCountOfPrintjobs = 1
        DoEvents
    Loop
    pdfjob.cPrinterStop = False
    'Wait until PDF creator is finished then release the objects
    Do Until pdfjob.cCountOfPrintjobs = 0
        DoEvents
    Loop
    pdfjob.cClose
    Set pdfjob = Nothing
End Sub

Boncourage

Creepy
 

lodam

XLDnaute Occasionnel
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

Merci creepy

Effectivement ça marche super bien !!
Merci à toi Creepy

Bonne fin de WE
Je poste le fichier qui montre un exemple

lodam

PS /
Pour éviter des erreurs, il faut aller dans VBA EDITOR et
a) Aller dans "Outils" puis "Références"
b) Cocher PDF Creator
 

Pièces jointes

  • exemple_pdf.xls
    36 KB · Affichages: 1 614

kiki29

XLDnaute Barbatruc
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

pour envoi en piece jointe
Code:
'=====================================================================================
'
'   [url=http://sourceforge.net/projects/pdfcreator]SourceForge.net: PDFCreator[/url]   PDFCreator-0_9_3_GPLGhostscript.exe
'   sous VBA Menu Outils | Références  Cocher PDFCreator
'                                      Cocher Microsoft CDO for Exchange xxxx Library
'
'=====================================================================================

Option Explicit

Sub Tst_PdfCreator()
Dim objMessage As CDO.Message
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String

    sNomPDF = "Essai_PdfCreator.pdf"
    sCheminPDF = ActiveWorkbook.Path & Application.PathSeparator

    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub

    Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")

    With JobPDF
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sCheminPDF
        .cOption("AutosaveFilename") = sNomPDF

        '   0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
        .cOption("AutosaveFormat") = 0

        .cClearCache
    End With

    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"

    'Fichier dans la file d'attente
    Do Until JobPDF.cCountOfPrintjobs = 1
        DoEvents
    Loop
    JobPDF.cPrinterStop = False

    'Attendre que la file d'attente soit vide
    Do Until JobPDF.cCountOfPrintjobs = 0
        DoEvents
    Loop
    JobPDF.cClose
    Set JobPDF = Nothing

    Set objMessage = CreateObject("CDO.Message")
    With objMessage
        .Subject = "Example"
        .From = "xxxxx@wanadoo.fr"
        .To = "yyyyy@orange.fr"
        .TextBody = "Texte dans le corps de message"
        .AddAttachment sCheminPDF & sNomPDF
        .Send
    End With

    Set objMessage = Nothing

End Sub
 
Dernière édition:

patpeig

XLDnaute Nouveau
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

Bonjour à tous,
Nouveau venu sur le forum, j'ai téléchargé PDFCreator et essayer la macro dans exemple_pdf.xls, bizarement la première fois ça a fonctionné nickel, et maintenant j'ai à chaque fois le message d'erreur : "Can't initialize PDFCreator."
Après analyse je constate que le processus PDFCreator reste en-cours, donc il faut faire fin de tache, avant de pouvoir réutiliser la macro...
Est-ce que quelqun peut m'aider à me sortir de cette galère ?
Merci d'avance !
Pat
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

A essayer
remplacer Dim pdfjob As PDFCreator.clsPDFCreator
par Dim pdfjob As Object

et Set pdfjob = New PDFCreator.clsPDFCreator
par Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
 

patpeig

XLDnaute Nouveau
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

Merci pour l'idée, je viens d'essayer et malheureusement au bout de la 5ème itération je rencontre le même problème. :confused:
Le processus PDFCreator reste en-cours !!!
Merci quand même !
 

kiki29

XLDnaute Barbatruc
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

et voilà
Code:
Sub SuppProcPDFCreator()
Dim RetVal As Variant
    RetVal = Shell("Taskkill /IM PDFCreator.exe /F", 0)
End Sub

voir Ce lien n'existe plus pour les paramètres
 
Dernière édition:

Ti_

Nous a quitté
Repose en paix
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

ce problème de processus qui ne veut pas se détruire semble bien être un bug de la dernière version de PDFCreator, qu'on ne rencontrait pas dans les versions précédentes. Espérons que dans une prochaine version ce problème sera corrigé.

Sinon pour piloter complètement PDFCreator depuis Excel, on peut aller voir mon prog PDF2XLS sur Vériti, et en particulier le programme démo qui l'accompagne.
 

kettou

XLDnaute Junior
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

pour envoi en piece jointe
Code:
'=====================================================================================
'
'   [URL="http://sourceforge.net/projects/pdfcreator"]SourceForge.net: PDFCreator[/URL]   PDFCreator-0_9_3_GPLGhostscript.exe
'   sous VBA Menu Outils | Références  Cocher PDFCreator
'                                      Cocher Microsoft CDO for Exchange xxxx Library
'
'=====================================================================================
 
Option Explicit
 
Sub Tst_PdfCreator()
Dim objMessage As CDO.Message
Dim JobPDF As Object
Dim sNomPDF As String
Dim sCheminPDF As String
 
    sNomPDF = "Essai_PdfCreator.pdf"
    sCheminPDF = ActiveWorkbook.Path & Application.PathSeparator
 
    If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
 
    Set JobPDF = CreateObject("PDFCreator.clsPDFCreator")
 
    With JobPDF
        If .cStart("/NoProcessingAtStartup") = False Then
            MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PDFCreator"
            Exit Sub
        End If
        .cOption("UseAutosave") = 1
        .cOption("UseAutosaveDirectory") = 1
        .cOption("AutosaveDirectory") = sCheminPDF
        .cOption("AutosaveFilename") = sNomPDF
 
        '   0=PDF, 1=Png, 2=jpg, 3=bmp, 4=pcx, 5=tif, 6=ps, 7=eps, 8=txt
        .cOption("AutosaveFormat") = 0
 
        .cClearCache
    End With
 
    ActiveSheet.PrintOut copies:=1, ActivePrinter:="PDFCreator"
 
    'Fichier dans la file d'attente
    Do Until JobPDF.cCountOfPrintjobs = 1
        DoEvents
    Loop
    JobPDF.cPrinterStop = False
 
    'Attendre que la file d'attente soit vide
    Do Until JobPDF.cCountOfPrintjobs = 0
        DoEvents
    Loop
    JobPDF.cClose
    Set JobPDF = Nothing
 
    Set objMessage = CreateObject("CDO.Message")
    With objMessage
        .Subject = "Example"
        .From = "xxxxx@wanadoo.fr"
        .To = "yyyyy@orange.fr"
        .TextBody = "Texte dans le corps de message"
        .AddAttachment sCheminPDF & sNomPDF
        .Send
    End With
 
    Set objMessage = Nothing
 
End Sub

bonjour,
j'ai pas trouvé dans outils références Cocher Microsoft CDO for Exchange xxxx Library du coup la procédure d'envois ne marche pas c'est possible de cocher une autre librairie
Merci d'avance pour votre réponse
 

Orpheu

XLDnaute Nouveau
Re : Idée pour créer un fichier PDF depuis PDF CREATOR

Bonjour... je tombe sur ton message... peut-être es tu passé à autre chose (depuis le 4/06)... au cas où:

CDO (Collaboration Data Objects) était distribué automatiquement avec Office jusqu'à 2007. Si tu es en 2007, il faut le télécharger chez Microsoft.
Pour les postes normaux (clients) il y a deux librairies:
- CDO.1.2.1 (cdo.dll)
- CDOsys pour Windows 2000

CDO for Exchange (CDOEXM) est installé avec Microsotf Exchange Server Administration Tools...

Dans quel cas te trouves tu ?
 

Discussions similaires

Statistiques des forums

Discussions
312 210
Messages
2 086 281
Membres
103 170
dernier inscrit
HASSEN@45