Imprimer pdf word à partir d'excel
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour, je sollicite votre aide pour résoudre un problème de taille sur le quelle je travail depuis vendredi dernier et qui ne fonctionne pas du tout. Je dois imprimer dans un fichier PDF une partie d'un documents word mêler à des documents excel. Il m'est impossible d'imprimer le document sélectionné avec pdfcreator. Je regarder sur tout les forums que j'ai trouvé et rien ne règle mon problème.
voici un code que j'ai trouvé sur interner et qui ferais ce dont j'ai besoin en gros:
À la fin il a imprimer mon document mais papier. Pourtant, dans word, il le fait vraiment dans un PDF. La commande "activeprinter" ne fonctionne pas. Avec la commande si-dessous, ça fonctionne dans un fichier excel mais si je remplace le début par mon documents, ça ne fonctionne pas plus.
dans excel:
Sheets("Soumission").Range("a1:h290").PrintOut copies:=1, ActivePrinter:="PDFCreator"
dans excel mais à partir du fichier word:
oWord.ActiveDocument..PrintOut copies:=1, ActivePrinter:="PDFCreator"
Je suis vraiment désespéré. Il faut que je règle cela.
merci de votre aide.
voici un code que j'ai trouvé sur interner et qui ferais ce dont j'ai besoin en gros:
Sub ToPdf()
Dim oWord As Word.Application
Dim oDoc As Word.document
Dim NomWord As String
VBA.Interaction.Shell ("TASKKILL /F /IM winword.exe")' Ferme Word s'il est ouvert dans le gestionnaire de tâche.
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
Set oWord = CreateObject("word.application")
oWord.Documents.Open "c:\users\jsgermain\documents\test\toto.doc"
Set oDoc = ActiveDocument
NomWord = ActiveDocument.name
NomPdf = Left(NomWord, Len(NomWord) - 4) & ".pdf"
'Si PDFCreator est ouvert, fermer l'application.
Do
Restart = False
Set pdfjob = New PDFCreator.clsPDFCreator
If pdfjob.cStart("/NoProcessingAtStartup") = False Then
'PDF Creator is already running. Kill the existing process
Shell "taskkill /im PDFCreator.exe" ', vbHide
DoEvents
Set pdfjob = Nothing
Restart = True
End If
Loop Until Restart = False
'Check if worksheet is empty and exit if so
If IsEmpty(ActiveSheet.UsedRange) Then Exit Sub
Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
.cOption("UseAutosave") = 1
.cOption("UseAutosaveDirectory") = 1
.cOption("AutosaveDirectory") = sPDFPath
.cOption("AutosaveFilename") = sPDFName
.cOption("AutosaveFormat") = 0
.cOption("AutosaveDirectory") = ActiveDocument.Path
.cCombineAll
.cClearCache
End With
ActivePrinter = "PDFCreator sur NE00:"
oWord.Documents.Open "c:\users\jsgermain\documents\test\toto.doc"
oWord.ActiveDocument.PrintOut copies:=1, Pages:="3-13"
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
Set pdfjob = Nothing
End Sub
À la fin il a imprimer mon document mais papier. Pourtant, dans word, il le fait vraiment dans un PDF. La commande "activeprinter" ne fonctionne pas. Avec la commande si-dessous, ça fonctionne dans un fichier excel mais si je remplace le début par mon documents, ça ne fonctionne pas plus.
dans excel:
Sheets("Soumission").Range("a1:h290").PrintOut copies:=1, ActivePrinter:="PDFCreator"
dans excel mais à partir du fichier word:
oWord.ActiveDocument..PrintOut copies:=1, ActivePrinter:="PDFCreator"
Je suis vraiment désespéré. Il faut que je règle cela.
merci de votre aide.
3 réponses
-
Bonjour,
J'ai l'impression que tu définis l'imprimante pour excel, pas pour word.
Essaie en la choisissant déjà manuellement dans word (si il est affiché, et en mettant un stop dans ta procédure avant l'impression) voir si ça se confirme.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci -
Bonjour,
Je ne suis pas sur d'avoir compris. Vous voulez imprimer un document Word en PDF à partir d'Excel?
Si c'est cela, voici le code:
'Allez dans Outils-référence et cochez: Microsoft Word 12.0 Object Library et PDFCreator Option Explicit Sub ToPdf() Dim chemindoc, chemindossier, NomWord, NomPdf As String Dim DefaultPrinter Dim pdfjob Dim DocWord As Word.Document Dim AppWord As Word.Application Set AppWord = New Word.Application AppWord.ShowMe AppWord.Visible = True chemindoc = "c:\users\jsgermain\documents\test\toto.doc" chemindossier = "c:\users\jsgermain\documents" Set DocWord = AppWord.Documents.Open(chemindoc, ReadOnly:=False) NomWord = AppWord.ActiveDocument.Name NomPdf = Left(NomWord, Len(NomWord) - 4) & ".pdf" Set pdfjob = CreateObject("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("UseAutisaveDirectory") = 1 .cOption("AutosaveDirectory") = chemindossier 'Chemin dossier destination .cOption("AutosaveFilename") = NomPdf .cOption("AutosaveFormat") = 0 .cClearCache End With pdfjob.cDefaultprinter = "PDFCreator" AppWord.ActiveDocument.PrintOut copies:=1 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 Set pdfjob = Nothing AppWord.Documents.Close AppWord.Visible = False MsgBox "Votre PDF se trouve à cet emplacement: " & chemindossier & NomPdf, vbInformation, "Convertir en PDF" End Sub
Voilà
-