Word : Macro conversion pdf
en2mots
Messages postés
166
Date d'inscription
Statut
Membre
Dernière intervention
-
en2mots Messages postés 166 Date d'inscription Statut Membre Dernière intervention -
en2mots Messages postés 166 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un publipostage qui à la fusion, donne des documents pour 125 destinataires. J'ai trouvé une macro que j'ai mis dans word, pour qu'une fois la base de données excel sélectionnées, je puisse avoir un enregistrement des fichiers word, séparément, donc 125, avec des caractéristiques pour le noms de chaque fichier et un emplacement bien précis d'enregistrement. E ça fonctionne très bien. En gros la macro, elle fusionne, coupe, nomme, enregistre et range les fichiers sous format word. PAR CONTRE ces fichiers, j'ai aussi besoin de les avoir sou format pdf dans un emplacement précis, avec les meme caractéristiques de nom de fichier. Le problème c'est que si je fais la meme macro en changeant juste le format .pdf dans la macro, les fichiers on bien les caractéristique visuels d'adobe mais ne s'ouvre pas (erreur quand je les ouvre... endommagé ou ....)
voici ma macro de base pour l'enregistrement sous word...que dois je faire ou rajouter pour la version pdf ???
Public Sub GenerationDocuments()
' Déclaration des variables
Dim recordCount As Integer
Dim index As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
recordCount = oDoc.MailMerge.DataSource.recordCount
Debug.Print recordCount & " a publier"
For index = 1 To recordCount
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = index
.DataSource.LastRecord = index
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = index
'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(3).Value
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; index
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "E:\Temp\test\" & DocName & ".doc"
.Close
End With
Next index
End Sub
J'ai un publipostage qui à la fusion, donne des documents pour 125 destinataires. J'ai trouvé une macro que j'ai mis dans word, pour qu'une fois la base de données excel sélectionnées, je puisse avoir un enregistrement des fichiers word, séparément, donc 125, avec des caractéristiques pour le noms de chaque fichier et un emplacement bien précis d'enregistrement. E ça fonctionne très bien. En gros la macro, elle fusionne, coupe, nomme, enregistre et range les fichiers sous format word. PAR CONTRE ces fichiers, j'ai aussi besoin de les avoir sou format pdf dans un emplacement précis, avec les meme caractéristiques de nom de fichier. Le problème c'est que si je fais la meme macro en changeant juste le format .pdf dans la macro, les fichiers on bien les caractéristique visuels d'adobe mais ne s'ouvre pas (erreur quand je les ouvre... endommagé ou ....)
voici ma macro de base pour l'enregistrement sous word...que dois je faire ou rajouter pour la version pdf ???
Public Sub GenerationDocuments()
' Déclaration des variables
Dim recordCount As Integer
Dim index As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
recordCount = oDoc.MailMerge.DataSource.recordCount
Debug.Print recordCount & " a publier"
For index = 1 To recordCount
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = index
.DataSource.LastRecord = index
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = index
'Utilisation de deux champs pour obtenir le nom du document
DocName = .DataSource.DataFields(3).Value
DocName = DocName & "-" & .DataSource.DataFields(4).Value
Debug.Print DocName; index
End With
' Sauvegarde du document publiposté
With ActiveDocument
.SaveAs "E:\Temp\test\" & DocName & ".doc"
.Close
End With
Next index
End Sub
A voir également:
- Macro word to pdf
- Lire le coran en français pdf - Télécharger - Histoire & Religion
- Word 2013 - Télécharger - Traitement de texte
- Tableau word - Guide
- Espace insécable word - Guide
- Word et excel gratuit - Guide
7 réponses
Bonjour,
Il faudrait lire les réponses qui te sont faites!!!!!!!!!!
https://forums.commentcamarche.net/forum/affich-32860432-macro-word-conversion-vba
Il faudrait lire les réponses qui te sont faites!!!!!!!!!!
https://forums.commentcamarche.net/forum/affich-32860432-macro-word-conversion-vba
en2mots
Messages postés
166
Date d'inscription
Statut
Membre
Dernière intervention
je l'ai lu... ca ne fonctionne pas, j'ai besoin de faire ces deux actions sur le meme fichier. Le publipostage... ou alors je n'arrive pas a caser ça comme il faut, ce qui en revient à : j'ai quand même besoin d'aide !!!! Ca me faciliterait que quelqu'un me donne la macro qui fasse les deux !
je l'ai lu... ca ne fonctionne pas
Mais tu n'as pas répondu!
J'aurais pu te dire comment adapter ce code, parce que chez moi cela fonctionne!
Mais tu n'as pas répondu!
J'aurais pu te dire comment adapter ce code, parce que chez moi cela fonctionne!
a adapter
Option Explicit Dim chemin As String Private Sub CommandButton1_Click() chemin = "C:\Users\.....\Documents\Nouveau dossier\" 'chemin a adapter ' Sauvegarde du document publiposté With ActiveDocument .SaveAs chemin & ActiveDocument.Name & ".doc" End With VersPDF End Sub Sub VersPDF() 'macro écrite par m@rina Dim nfichier As String, nfichier2 As String, intpos As Byte nfichier = ActiveDocument.Name 'trouve la position de l'extension intpos = InStrRev(nfichier, ".") 'remplace l'extension doc par pdf nfichier = Left(nfichier, intpos - 1) nfichier2 = nfichier & ".pdf" 'enregistre dans le dossier en cours ActiveDocument.ExportAsFixedFormat outputFileName:=chemin & nfichier2, _ exportFormat:=wdExportFormatPDF End Sub
Dim DocName As String Dim chemin As String Public Sub GenerationDocuments() ' Déclaration des variables Dim recordCount As Integer Dim index As Integer Dim oDoc As Document Dim oDS As MailMergeDataSource ' Affectation des objets Set oDoc = ActiveDocument Set oDS = oDoc.MailMerge.DataSource recordCount = oDoc.MailMerge.DataSource.recordCount Debug.Print recordCount & " a publier" For index = 1 To recordCount With oDoc.MailMerge 'Définition du premier et dernier enregistrement .DataSource.FirstRecord = index .DataSource.LastRecord = index ' Envoi des données dans un nouveau document .Destination = wdSendToNewDocument ' Exécution du publipostage .Execute ' Actualisation de l'enregistrement pour la sauvegarde .DataSource.ActiveRecord = index 'Utilisation de deux champs pour obtenir le nom du document DocName = .DataSource.DataFields(3).Value DocName = DocName & "-" & .DataSource.DataFields(4).Value Debug.Print DocName; index End With ' Sauvegarde du document publiposté chemin = "E:\Temp\test\" & DocName & ".doc" With ActiveDocument .SaveAs chemin End With Next index 'enregistre en PDF VersPDF End Sub Sub VersPDF() 'macro écrite par m@rina Dim nfichier As String, nfichier2 As String, intpos As Byte nfichier = DocName 'trouve la position de l'extension intpos = InStrRev(nfichier, ".") 'remplace l'extension doc par pdf nfichier = Left(nfichier, intpos - 1) nfichier2 = nfichier & ".pdf" 'enregistre dans le dossier en cours ActiveDocument.ExportAsFixedFormat outputFileName:=chemin & nfichier2, _ exportFormat:=wdExportFormatPDF End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu mets:
J'ai trouvé une macro que j'ai mis dans word,
Ta macro est bien dans un document Word?
ensuite quel Office as-tu?
Parce que ce n'est valable qu'à partir de Office 2007.
J'ai trouvé une macro que j'ai mis dans word,
Ta macro est bien dans un document Word?
ensuite quel Office as-tu?
Parce que ce n'est valable qu'à partir de Office 2007.
Tout n'est pas perdu, essaie d'après ce site, je vois de mon coté ce que je peux faire:
https://heureuxoli.developpez.com/office/word/doc2pdf/
https://heureuxoli.developpez.com/office/word/doc2pdf/
D'abord il faut allez dans le ruban de l'éditeur, dans Outils, Référence et cochez PDFCreator. Il faut que tu cherches le chemin de PDFCreator sur ton PC. Moi je suis sous Windows 10, le tien est peut-être différent. si c'est le cas tu le changes!
Voilà le code, tu l'essaies tel que, on verra après pour l'adapter à ta macro:
Voilà le code, tu l'essaies tel que, on verra après pour l'adapter à ta macro:
Option Explicit Dim chemin As String Private Sub CommandButton2_Click() chemin = ThisDocument.Path & "\" With ActiveDocument .SaveAs chemin & ActiveDocument.Name End With testPrintPDF MsgBox "PDF enregistré" End Sub Sub testPrintPDF() Dim oldPrinter As String Dim stChemin As String Dim stNom As String ' Affichage de la fenêtre de PDF Shell "C:\Program Files (x86)\PDFCreator\PDFCreator.exe", vbNormalFocus 'a adapter le chemin de ton pc Dim PDFCreator1 As New clsPDFCreator oldPrinter = ActivePrinter 'On va mettre en mémoire dans une 'variable le nom de l'imprimante par défaut ActivePrinter = "PDFCreator" 'Mettre comme imprimante par défaut PDFCreator If Len(ActiveDocument.Path) = 0 Then stChemin = chemin '"c:\temp" Else stChemin = chemin 'ActiveDocument.Path End If 'Si le document n'a pas été sauvegardé, le PDF sera dans le répertoire c:\temp 'et un nom par défaut documentPDF;pdf If Len(ActiveDocument.Name) = 0 Then stNom = "documentPDF.pdf" Else stNom = ActiveDocument.Name End If 'les option PDFCreator With PDFCreator1 .cOption("UseAutosave") = 1 .cOption("UseAutosaveDirectory") = 1 .cOption("AutosaveDirectory") = stChemin .cOption("AutosaveFilename") = stNom .cOption("AutosaveFormat") = 0 ' 0 = PDF .cStart .cClearCache End With ActiveDocument.PrintOut Background:=True PDFCreator1.cClose ActivePrinter = oldPrinter ' Change l'imprimante par défaut End Sub