macro excel pour impression pdf d'un document publisher

jibe94370

XLDnaute Nouveau
Bonjour à tous, :)
je cherche à imprimer au format pdf un catalogue Publisher (500 pages). l'idée étant de faire une impression par page, celle ci étant enregistrer en fonction d'une valeur se trouvant dans un tableau Excel.
j'ai tapé le code suivant

Code:
Sub pdfpub()
    ' conversion publisher en pdf
    
Dim AppMsPub As Publisher.Application
Dim DocMsPub As Publisher.Document

'Crée l'instance Publisher
Set AppMsPub = CreateObject("publisher.Application")
'Masque l'application pendant l'opération.
'Indiquez la valeur True pour voir l'application Publisher.
AppMsPub.ActiveWindow.Visible = False
'Ouvre le document
Set DocMsPub = AppMsPub.Open("D:\Documents and Settings\jpigasse\Bureau\test catalogue\testa.pub")

'Crée une copie au format .htm
'DocMsPub.SaveAs Filename:="C:\NomcopieWeb", _
  '  Format:=pbFileHTMLFiltered
  
Dim ligne As Long
    ligne = 2
Dim i As Long

chemin = "D:\Documents and Settings\Bureau\test catalogue\"

While ActiveSheet.Cells(ligne, 1).Value <> ""
                
                NomPDF = left("Idée -" & ActiveSheet.Cells(ligne, 3).Value, Len("Idée -" & ActiveSheet.Cells(ligne, 4).Value) - 4) & ".pdf"
            
         Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
        With pdfjob
                        If .cStart("/NoProcessingAtStartup") = False Then
                        MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PrtPDFCreator"
                        Exit Sub

                   End If
                    .cOption("UseAutosave") = 1
                    .cOption("UseAutosaveDirectory") = 1
                    .cOption("AutosaveDirectory") = chemin
                    .cOption("AutosaveFilename") = NomPDF
                    .cOption("AutosaveFormat") = 0 '0 pour pdf
                    .cClearCache
        End With
                 i = ligne - 1
                 ActivePrinter = "PDFCreator sur Ne00:"
                 Application.PrintOut Filename:="", Range:=wdPrintRangeOfPages, Item:= _
                  pubPrintDocumentContent, From:=i, To:=i, Copies:=1
               
              Application.PrintOut
              
               Do Until pdfjob.cCountOfPrintjobs = 1
                DoEvents
                 Loop
                 pdfjob.cPrinterStop = False
                Do Until pdfjob.cCountOfPrintjobs = 0
                DoEvents
                 Loop
                With pdfjob
                    .cDefaultPrinter = DefaultPrinter
                    .cClearCache
                    .cClose
                End With
                
               
                
         Wend
                
        'Ferme le document
            DocMsPub.Close
        'Ferme l'application
            AppMsPub.Quit
End Sub

il semblerait qu'il n'apprecie pas " pubPrintDocumentContent". :confused:

Quelqu'un aurai t il une solution ? ou explication?

je vous remercie.:D
 

jibe94370

XLDnaute Nouveau
Re : macro excel pour impression pdf d'un document publisher

bonsoir et merci pour ta réponse, :eek:

oui j'ai pdfcreator d'installé,

mais je ne peux pas faire une impression page après pages (il y en a presque 500)
d’où le fait que j'essaye de passer par une macro Excel.

c'est d’ailleurs un autre axe de réflexion : passer par une macro Excel pour imprimer une par une les pages du document deja imprimé au format pdf en les renommant (car le document n'est ni plus ni moins qu'un publipostage depuis Publisher a partir de ce même fichier Excel) a partir du fichier.

si tu as une idée je suis preneur...:)

jb
 

jibe94370

XLDnaute Nouveau
Re : macro excel pour impression pdf d'un document publisher

merci pour le lien.
cependant il ne me permet pas de "découper" mon fichier
l'idée en fait est, a partir d'un fichier pdf de 500 page, en créer 500 de une page (chaque fichier ainsi creer etant une page du fichier original)
c'est pour ca que j'en suis venu à imaginer une macro qui imprime la page i du document pdf en un autre document pdf , i allant de 1 à 500 par exemple (fonction du nombre de pages du fichier original).
ce qui donnerait quelque chose comme :

Code:
Dim ligne As Long
    ligne = 2
Dim i As Long

chemin = "D:\Documents and Settings\Bureau\test catalogue\"
'on precise où l'on va stocker le fichier créer

' a partir du fichier excel , on prend la valeur se trouvant sur la premiere colonne pour nommer le fichier ainsi creer

While ActiveSheet.Cells(ligne, 1).Value <> ""
               
               'nom du fichier
                NomPDF = left("Idée -" & ActiveSheet.Cells(ligne, 3).Value, Len("Idée -" & ActiveSheet.Cells(ligne, 4).Value) - 4) & ".pdf"
           
         Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
        With pdfjob
                        If .cStart("/NoProcessingAtStartup") = False Then
                        MsgBox "Initialisation de PDFCreator impossible", vbCritical + vbOKOnly, "PrtPDFCreator"
                        Exit Sub

                   End If
                    .cOption("UseAutosave") = 1
                    .cOption("UseAutosaveDirectory") = 1
                    .cOption("AutosaveDirectory") = chemin
                    .cOption("AutosaveFilename") = NomPDF
                    .cOption("AutosaveFormat") = 0 '0 pour pdf
                    .cClearCache
        End With
                 i = ligne - 1
                 ActivePrinter = "PDFCreator sur Ne00:"
                 Application.PrintOut Filename:="", Range:=wdPrintRangeOfPages, Item:= _
                PrintDocumentContent, From:=i, To:=i, Copies:=1
               
              Application.PrintOut
             
               Do Until pdfjob.cCountOfPrintjobs = 1
                DoEvents
                 Loop
                 pdfjob.cPrinterStop = False
                Do Until pdfjob.cCountOfPrintjobs = 0
                DoEvents
                 Loop
                With pdfjob
                    .cDefaultPrinter = DefaultPrinter
                    .cClearCache
                    .cClose
                End With
         Wend
End Sub
[code]

mais ca ne marche pas
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal