Enregistrer sous .pdf
D
Bonjour,
J'effectue du publipostage via une macro.
Une fois que le publipostage se fait, il l'imprime sur l'imprimante par défaut.
J'utilisais alors une imprimante pdf virtuelle pour pouvoir enregistrer mes publipostage (.Destination = wdSendToPrinter)
J'aimerais enregistrer automatiquement le publipostage dans un répertoire sans passé par l'imprimante virtuelle.
Voici le code
Private Sub commandButton1_Click()
'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 NomBase As String
NomBase = "E:\ftp\dp.xls"
Application.ScreenUpdating = False
Set appWord = New Word.Application
appWord.Visible = True
'Ouverture du document principal Word
Set docWord = appWord.Documents.Open("E:\ap\mp.docx")
'fonctionnalité de publipostage pour le document spécifié
With docWord.mailMerge
'Ouvre la base de données
.OpenDataSource Name:=NomBase, _
Connection:="Driver={Microsoft Excel Driver (*.xls)};" & _
"DBQ=" & NomBase & "; ReadOnly=True;", _
SQLStatement:="SELECT * FROM [Rapport 1$]"
'Spécifie la fusion vers l'imprimante
.Destination = wdSendToPrinter
.suppressBlankLines = True
'Prend en compte l'ensemble des enregistrements
With .DataSource
.firstRecord = wdDefaultFirstRecord
.lastRecord = wdDefaultLastRecord
End With
'Exécute l'opération de publipostage
.Execute Pause:=False
End With
Application.ScreenUpdating = True
'Fermeture du document Word
docWord.Close False
appWord.Quit
End SubEn espérant que vous allez pouvoir m'aider.
Bien à vous.
Bonjour
une solution :
remplacer
.Destination = wdSendToPrinterpar
.Destination = wdSendToNewDocumentsachant que
wdSendToNewDocument = 0il faut mettre quelque chose comme :
'mise en mémoire du nom du fichier a sauvegarder
nom_fichier = cheminW & Sheets(1).Range("A2") & ".pdf" 'chemin d'enregistrement et nom du fichier pdf... a modifier en conséquence
With appWord.ActiveDocument
'export du fichier au format pdf
.ExportAsFixedFormat (nom_fichier), wdExportFormatPDF
'fermeture du fichier fusionné sans enregister le docx
.Close False
End Withsachant que wdExportFormatPDF
wdExportFormatPDF = 17Donc inserer le code ci-dessus après le
End Withet avant le
Application.ScreenUpdating = TrueFred