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 Sub
En espérant que vous allez pouvoir m'aider.
Bien à vous.
Bonjour
une solution :
remplacer
.Destination = wdSendToPrinter
par
.Destination = wdSendToNewDocument
sachant que
wdSendToNewDocument = 0
il 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 With
sachant que wdExportFormatPDF
wdExportFormatPDF = 17
Donc inserer le code ci-dessus après le
End With
et avant le
Application.ScreenUpdating = True
Fred