Création d'un pdf à partir d'un document word mais d'un macro sur excel
Résolu
jujuetd63
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
jujuetd63 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
jujuetd63 Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je travail sur un projet qui doit assembler plusieurs documents word en un seul depuis une application sur excel.
Cela est fait mais je souhaite enregistrer le document word final en version pdf.
Je reçois le message suivant à chaque essai:
Erreur de compilation
projet ou bibliothèque introuvable
voici la ligne indiquée comme fausse
NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".pdf"
"left" étant surligné
Je ne peux pas cocher dans les références les cases "PDFactivedoc1.0 type Library"
Sont elles nécessaires pour créer un PDF? (manque DLL????)
Voici le code complet que j'ai trouvé et que j'essaie de faire fonctionner:
Sub fonctionpdf()
Dim chemindoc, chemindossier, NomWord, NomdocPdf 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 = "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx"
chemindossier = "D:\COMPTE.R\test macro\teste"
Set DocWord = AppWord.Documents.Open(chemindoc, ReadOnly:=False)
NomWord = AppWord.ActiveDocument.Name
NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".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
End Sub
Pouvez vous m'aider
Merci d'avance
je travail sur un projet qui doit assembler plusieurs documents word en un seul depuis une application sur excel.
Cela est fait mais je souhaite enregistrer le document word final en version pdf.
Je reçois le message suivant à chaque essai:
Erreur de compilation
projet ou bibliothèque introuvable
voici la ligne indiquée comme fausse
NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".pdf"
"left" étant surligné
Je ne peux pas cocher dans les références les cases "PDFactivedoc1.0 type Library"
Sont elles nécessaires pour créer un PDF? (manque DLL????)
Voici le code complet que j'ai trouvé et que j'essaie de faire fonctionner:
Sub fonctionpdf()
Dim chemindoc, chemindossier, NomWord, NomdocPdf 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 = "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx"
chemindossier = "D:\COMPTE.R\test macro\teste"
Set DocWord = AppWord.Documents.Open(chemindoc, ReadOnly:=False)
NomWord = AppWord.ActiveDocument.Name
NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".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
End Sub
Pouvez vous m'aider
Merci d'avance
A voir également:
- Création d'un pdf à partir d'un document word mais d'un macro sur excel
- Word et excel gratuit - Guide
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Signer un document word - Guide
- Faire un organigramme sur word - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
8 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu utiliser les balises de code quand tu partages du code? https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
pour le soucis avec
se pourrait-il que, dans les références cochées, il y en ait une qui soit indiquée comme défectueuse?
quand tu utilises Word sans macro, ne peux-tu pas créer un fichier PDF en imprimant le fichier? si oui, pourquoi ne pas faire de même via la macro?
pour le soucis avec
left():
se pourrait-il que, dans les références cochées, il y en ait une qui soit indiquée comme défectueuse?
quand tu utilises Word sans macro, ne peux-tu pas créer un fichier PDF en imprimant le fichier? si oui, pourquoi ne pas faire de même via la macro?
Bonjour,
chez moi cela fonctionne en cochant la référence: Microsoft Word 12.0 Object Library
mets cela pour voir si il n'y a pas une erreur de chemin
chez moi cela fonctionne en cochant la référence: Microsoft Word 12.0 Object Library
mets cela pour voir si il n'y a pas une erreur de chemin
NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".pdf" MsgBox NomdocPdf
Merci à vous deux, j'ai franchi l'étape du "left " grâce à vous.
Mais un problème en cache toujours un autre, je reçois maintenant le défaut "429""un composant ActiveX ne peut pas créer d'objet"
quand j'arrive sur la ligne:
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
Ya t il un logiciel "PDFCreator "particulier à installer pour que cela fonction?
J'ai installé AdobeReader
Mais un problème en cache toujours un autre, je reçois maintenant le défaut "429""un composant ActiveX ne peut pas créer d'objet"
quand j'arrive sur la ligne:
Set pdfjob = CreateObject("PDFCreator.clsPDFCreator")
Ya t il un logiciel "PDFCreator "particulier à installer pour que cela fonction?
J'ai installé AdobeReader
Sub fonctionpdf() Dim chemindoc, chemindossier, NomWord, NomdocPdf 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 = "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx" chemindossier = "D:\COMPTE.R\test macro\teste" Set DocWord = AppWord.Documents.Open(chemindoc, ReadOnly:=False) NomWord = AppWord.ActiveDocument.Name NomdocPdf = Left(NomWord, Len(NomWord) - 5) & ".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 End Sub
Il faut avoir PDFCreator sur sa machine
https://www.commentcamarche.net/telecharger/bureautique/17257-pdfcreator/
sinon, si tu as Office 2007 ou plus récent tu peux enregistrer en PDF.
Il te suffit donc de te servir de l'enregistreur de macro et d’enregistrer ton document Word, tu auras ta macro
@+ Le Pivert
https://www.commentcamarche.net/telecharger/bureautique/17257-pdfcreator/
sinon, si tu as Office 2007 ou plus récent tu peux enregistrer en PDF.
Il te suffit donc de te servir de l'enregistreur de macro et d’enregistrer ton document Word, tu auras ta macro
@+ Le Pivert
bonjour,
J'ai essayé tout ce que vous m'avez conseillé mais cela ne fonctionne pas. J'ai pu créer le pdf de mon document Word depuis ce dernier mais pas depuis excel.
Je vous décri ce que je fait actuellement:
Dans mon classeur excel:
.je sélectionne différents documents WORD que je copie dans un dossier "ASSEMBLAGE"
.puis j'ouvre un document WORD nommé "CONSTURCTION"
Dans le document word une macro effectue l'assemblage des documents
(je n'ai pas trouvé le moyen de le faire dans EXCEL)
Dans mon classeur excel:
.je modifie le document word assemblé et je l'enregistre sous le nom du projet.
Voila ou j'en suis.
Je souhaite maintenant convertir le document word assemblé en PDF.
j'ai d'autre fonctionnalité à ajouter par la suite comme assemblé le contenu de différents classeurs EXCEL en même temps que les documents word mais pas dans le même document.
au final je souhaite avoir:
Un manuel sous WORD
Un manuel sous PDF
Un classeur EXCEL avec les données liées au manuel
Pour le classeur EXCEL final cela fera surement l'objet d'une prochaine demande d'aide.
Pour le moment je veux juste convertir le document WORD assemblé en pdf.
si vous avez d'autres idées je suis preneur et si vous connaissez le moyen de faire l'assemblage sous EXCEL cela m'intéresse .
merci pour votre aide
J'ai essayé tout ce que vous m'avez conseillé mais cela ne fonctionne pas. J'ai pu créer le pdf de mon document Word depuis ce dernier mais pas depuis excel.
Je vous décri ce que je fait actuellement:
Dans mon classeur excel:
.je sélectionne différents documents WORD que je copie dans un dossier "ASSEMBLAGE"
.puis j'ouvre un document WORD nommé "CONSTURCTION"
Dans le document word une macro effectue l'assemblage des documents
(je n'ai pas trouvé le moyen de le faire dans EXCEL)
Dans mon classeur excel:
.je modifie le document word assemblé et je l'enregistre sous le nom du projet.
Voila ou j'en suis.
Je souhaite maintenant convertir le document word assemblé en PDF.
j'ai d'autre fonctionnalité à ajouter par la suite comme assemblé le contenu de différents classeurs EXCEL en même temps que les documents word mais pas dans le même document.
au final je souhaite avoir:
Un manuel sous WORD
Un manuel sous PDF
Un classeur EXCEL avec les données liées au manuel
Pour le classeur EXCEL final cela fera surement l'objet d'une prochaine demande d'aide.
Pour le moment je veux juste convertir le document WORD assemblé en pdf.
si vous avez d'autres idées je suis preneur et si vous connaissez le moyen de faire l'assemblage sous EXCEL cela m'intéresse .
merci pour votre aide
Tu ne nous dis pas si tu enregistres en pdf avec PDFCreator ou avec ta version d'Excel
Pour enregistrer un Word en PDF avec les versions Office 2007 et plus voir ceci:
https://www.faqword.com/index.php/word/environnement/892-creer-une-macro-pour-enregistrer-au-format-pdf
@+ Le Pivert
Pour enregistrer un Word en PDF avec les versions Office 2007 et plus voir ceci:
https://www.faqword.com/index.php/word/environnement/892-creer-une-macro-pour-enregistrer-au-format-pdf
@+ Le Pivert
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai supprimé la macro car je n'arrivé pas à la faire fonctionner dans Excel.
Je ne peux pas utiliser une macro sur le document Word car je souhaite le modifier avant par des macros qui sont dans Excel. Il faut donc que le document Word soit totalement créer avant de le mettre en PDF.
Si vous me dites comment faire, je peux vous fournir les deux documents Excel et Word qui me servent à l'assemblage.
Pour le teste avec Excel en utilisant l'enregistreur de macro, je ne suis pas arrivé à convertir le document Word mais seulement le classeur Excel.
Je ne sais pas s'il est possible d'enregistrer une macro Dans Excel qui converti en PDF un document Word.
J'utilise office 2016 et j'ai installer PDFCreator avec le liens que vous m'avez fourni. J'ai utilisé l'onglet présent maintenant dans les Documents Word et Excel. À la main cela fonction, je peu convertir mon classeur Excel depuis l'onglet du classeur et même chose dans Word.
C'est le faire depuis Excel dans Word que je ne sais pas faire après avoir enregistré mon document Word.
laligne de code excel suivante:
Cible.SaveAs2 "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx", FileFormat:=wdFormatXMLDocument
'Call fonctionpdf
(j'ai mis en commentaire l'appel de la fonction pour le moment)
voici le code présent dans Excel pour l'assemblage:
Je ne peux pas utiliser une macro sur le document Word car je souhaite le modifier avant par des macros qui sont dans Excel. Il faut donc que le document Word soit totalement créer avant de le mettre en PDF.
Si vous me dites comment faire, je peux vous fournir les deux documents Excel et Word qui me servent à l'assemblage.
Pour le teste avec Excel en utilisant l'enregistreur de macro, je ne suis pas arrivé à convertir le document Word mais seulement le classeur Excel.
Je ne sais pas s'il est possible d'enregistrer une macro Dans Excel qui converti en PDF un document Word.
J'utilise office 2016 et j'ai installer PDFCreator avec le liens que vous m'avez fourni. J'ai utilisé l'onglet présent maintenant dans les Documents Word et Excel. À la main cela fonction, je peu convertir mon classeur Excel depuis l'onglet du classeur et même chose dans Word.
C'est le faire depuis Excel dans Word que je ne sais pas faire après avoir enregistré mon document Word.
laligne de code excel suivante:
Cible.SaveAs2 "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx", FileFormat:=wdFormatXMLDocument
'Call fonctionpdf
(j'ai mis en commentaire l'appel de la fonction pour le moment)
voici le code présent dans Excel pour l'assemblage:
Sub assemb() Dim Appli As Word.Application Dim Cible As Word.Document Dim ciblepdf As String Dim separateur As Byte Dim nfichier As String 'r?cuperation page de garde et documents If Range("h1") = "" Then MsgBox ("entrez le nom du projet et la date") Else If Range("h2") = "" Then MsgBox ("entrez la date") Else Call pagegarde Call ensem1 Call ensem2 Call ensem3 Call ensem4 Call ensem5 Call ensem6 Call ensem7 Call ensem8 Call ensem9 Call ensem10 Call ensem11 Call ensem12 Call ensem13 Call ensem14 Call ensem15 Call ensem16 Call ensem17 Call ensem18 Call ensem19 Call ensem20 'assemblage du document final appel du document word construction Set Appli = CreateObject("Word.Application") Set Cible = Appli.Documents.Open("D:\COMPTE.R\test macro\teste\construction.docm") Appli.Visible = True MsgBox ("Les documents ont ?t? assembl?s pour poursuivre cliquer sur ok") Cible.Bookmarks("nom").Range.Text = Cells(1, 8) Cible.Bookmarks("date").Range.Text = Cells(2, 8) MsgBox ("v?rification avant enregistrement sous") Cible.SaveAs2 "D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx", FileFormat:=wdFormatXMLDocument 'Call fonctionpdf Cible.Close Appli.Visible = False End If End If End Sub
C'est ce que j'ai fait mais je n'ai pas réussi à le faire fonctionner depuis Excel. j'ai rajouté dans ma réponse précédente le code que j'ai dans Excel pour piloter Word.
Voici celui que j'ai dans Word:
Je souhaitai fait cette opération depuis excel aussi mais je n'y suis pas arrivé voila pourquoi j' ai des codes dans deux documents.
tout de suite je dois attendre que Word et fait l'assemblage avec le code ci dessus avant de pouvoir poursuivre le code Excel (réponse 5 )donc voila pourquoi dans le code Excel, il y a des MSGBOX.
J'utilise office 2016.
Voici celui que j'ai dans Word:
Sub assemblageDoc() Dim dlgFile As FileDialog Dim nTotalFiles As Integer Dim nEachSelectedFile As Integer ChDir "D:\COMPTE.R\test macro\assemblage\" Set dlgFile = Application.FileDialog(msoFileDialogFilePicker) With dlgFile .AllowMultiSelect = True If .Show <> -1 Then Exit Sub Else nTotalFiles = .SelectedItems.Count End If End With For nEachSelectedFile = 1 To nTotalFiles Selection.InsertFile dlgFile.SelectedItems.Item(nEachSelectedFile) If nEachSelectedFile < nTotalFiles Then Selection.InsertBreak Type:=wdPageBreak Else If nEachSelectedFile = nTotalFiles Then Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2" Selection.Find.ClearFormatting With Selection.Find .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With With ActiveDocument .TablesOfContents.Add Range:=Selection.Range, RightAlignPageNumbers:= _ True, UseHeadingStyles:=True, UpperHeadingLevel:=1, _ LowerHeadingLevel:=3, IncludePageNumbers:=True, AddedStyles:="", _ UseHyperlinks:=True, HidePageNumbersInWeb:=True, UseOutlineLevels:= _ True .TablesOfContents(1).TabLeader = wdTabLeaderDots .TablesOfContents.Format = wdIndexIndent End With Exit Sub End If End If Next nEachSelectedFile End Sub
Je souhaitai fait cette opération depuis excel aussi mais je n'y suis pas arrivé voila pourquoi j' ai des codes dans deux documents.
tout de suite je dois attendre que Word et fait l'assemblage avec le code ci dessus avant de pouvoir poursuivre le code Excel (réponse 5 )donc voila pourquoi dans le code Excel, il y a des MSGBOX.
J'utilise office 2016.
il faut pas tout mélanger!
La demande est Création d'un pdf à partir d'un document word mais d'un macro sur excel
voilà une macro qui fait le job:
si cela te convient tu mets en résolu et tu postes une autre demande pour la suite.
Sinon on ne va pas s'y retrouver
@+ Le Pivert
La demande est Création d'un pdf à partir d'un document word mais d'un macro sur excel
voilà une macro qui fait le job:
Option Explicit Sub savePDF() '-------------------------------------------------------------------------------- 'Nécessite d'activer la référence "Microsoft Word xx.x Object Library" '-------------------------------------------------------------------------------- Dim docWord As Word.Document Dim appWord As Word.Application Dim fic_doc As String Dim cheminpdf As String fic_doc = Application.GetOpenFilename("Fichiers Word (*.docx), *.docx") Set appWord = New Word.Application appWord.Visible = True 'Ouverture du document principal Word Set docWord = appWord.Documents.Open(fic_doc) cheminpdf = Replace(fic_doc, "docx", "pdf") 'enregistre en pdf dans le dossier en cours ActiveDocument.ExportAsFixedFormat outputFileName:=cheminpdf, _ exportFormat:=wdExportFormatPDF 'Fermeture du document Word docWord.Close False appWord.Quit End Sub
si cela te convient tu mets en résolu et tu postes une autre demande pour la suite.
Sinon on ne va pas s'y retrouver
@+ Le Pivert
J'ai fait plusieurs test mais j'ai toujours ce message d'erreur qui s'affiche:
Erreur d'exécution 4248
Commande non disponible: aucun document n'est ouvert.
Pourtant le document est bien ouvert.
Avez vous une idée
ligne en surbrillance:
ActiveDocument.ExportAsFixedFormat outputFileName:=cheminpdf, _
exportFormat:=wdExportFormatPDF
J'ai également fait des essais avec:
Set docWord = appWord.Documents.Open("D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx")
à la place de:
fic_doc = Application.GetOpenFilename("Fichiers Word (*.docx), *.docx")
pour sélectionner directement le document créé mais j'ai le même resultat.
Erreur d'exécution 4248
Commande non disponible: aucun document n'est ouvert.
Pourtant le document est bien ouvert.
Avez vous une idée
ligne en surbrillance:
ActiveDocument.ExportAsFixedFormat outputFileName:=cheminpdf, _
exportFormat:=wdExportFormatPDF
J'ai également fait des essais avec:
Set docWord = appWord.Documents.Open("D:\COMPTE.R\test macro\teste\" & Range("h1").Value & ".docx")
à la place de:
fic_doc = Application.GetOpenFilename("Fichiers Word (*.docx), *.docx")
pour sélectionner directement le document créé mais j'ai le même resultat.
C'est bien coché?
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Pourtant le document est bien ouvert.
on le voit dans la barre de tâches en bas?
mettre cela pour voir si c'est le bon chemin
Voilà
'--------------------------------------------------------------------------------
'Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Pourtant le document est bien ouvert.
on le voit dans la barre de tâches en bas?
mettre cela pour voir si c'est le bon chemin
fic_doc = Application.GetOpenFilename("Fichiers Word (*.docx), *.docx") MsgBox fic_doc cheminpdf = Replace(fic_doc, "docx", "pdf") MsgBox cheminpdf
Voilà
'--------------------------------------------------------------------------------
quand tu utilises Word sans macro, ne peux-tu pas créer un fichier PDF en imprimant le fichier? si oui, pourquoi ne pas faire de même via la macro?
Que veux tu dire?