Publipostage en format Word dans plusieurs dossier definis
Bonjour à tous les St-Bernard d'excel :-)
A nouveau, je suis devant une impasse.
Le code ci-dessous fait le travail que je veux mais en PDF, comment modifier ce code pour qu'il me fasse la même chose en Word.docx
Merci d'avance pour votre secours.
Amicalement
Andreas
Sub evaluation_environnementale_()
'--------------------------------------------------------------------------------
'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, cheminW, cheminP, fichier_source, DocName As String
Dim Nom_Fichier, Nomsourcebase As String
Dim fin, i As Integer
Application.ScreenUpdating = False
fichier_source = ActiveWorkbook.Name
'cheminW = chemin du fichier source Excel
cheminW = "N:\conformité"
'Nombase = mettre le chemin et le nom du fichier Excel source
NomBase = "N:\Conformité SWC West.xlsm"
Application.DisplayAlerts = False
Set appWord = New Word.Application
appWord.Visible = True
'Ouverture du document principal Word pour le publipostage
Set docWord = appWord.Documents.Open("N:\02 Évaluation des aspects environnementaux multi.docx")
With docWord.MailMerge
'Ouvre la base de données le fichier excel doit avoir sa feuille nommée 'Eval environ'
.OpenDataSource Name:=NomBase, Connection:="Driver={Microsoft Excel Driver (*.xlsx)};" & "DBQ=" & NomBase & "; ReadOnly=True;", SQLStatement:="SELECT * FROM [Eval environ$] WHERE Conformité = 'XOui' "
fin = .DataSource.RecordCount
End With
'For = de la première ligne de la BD à la dernière
For i = 1 To fin
'fonctionnalité de publipostage pour le document spécifié
With docWord.MailMerge
'Spécifie la fusion vers un nouveau doc
.Destination = wdSendToNewDocument
.SuppressBlankLines = True
'Prend en compte uniquement l'enregistrement i
With .DataSource
.FirstRecord = i
.LastRecord = i
End With
'Exécute l'opération de publipostage
.Execute Pause:=False
'recupère le nom du fichier source excel
.DataSource.ActiveRecord = i
DocName = .DataSource.DataFields(5).Value & " Evaluation environnementaux 2020"
cheminP = .DataSource.DataFields(68).Value 'Donne l'information de la colonne 68 en tant que lien du fichier de destination
End With
Nom_Fichier = cheminP & DocName & ".pdf"
With appWord.ActiveDocument
'export pdf
.ExportAsFixedFormat OutputFileName:=(Nom_Fichier), _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=False, KeepIRM:=False, _
CreateBookmarks:=wdExportCreateHeadingBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=False, UseISO19005_1:=False
'fermeture du fichier W sans enregistrement
.Close False
End With
Next i
Application.ScreenUpdating = True
'Fermeture du document Word
docWord.Close False
appWord.Quit
MsgBox "Les documents ont été créees avec succès, action Terminée"
End SubSalut tous le monde,
Après des heures de tests, EUREKA!
Il suffisait de changer une partie du code:
Nom_Fichier = cheminP & DocName & ".docx"
With appWord.ActiveDocument
.SaveAs Nom_Fichier
End WithMerci a tous ceux qui ont lu, et profitez de cet Input pour vos utilitaires
Andreas
Re,
Et pour refermer le document de fusion:
Nom_Fichier = cheminP & DocName & ".docx"
With appWord.ActiveDocument
.SaveAs Nom_Fichier 'enregistre le fichier de fusion en format Word
appWord.ActiveDocument.Close True 'Fermeture du document de fusion
End WithProfitez...
Cordialement
Andreas
Bonjour Andreas, bonjour le forum,
Ton code me plait bien, je suis en pleine réflexion pour automatiser mes fichiers ...
J'essaie de le mettre en œuvre début de semaine prochaine...
Pour enregistrer en word ET faire le pdf.
je pense qu'il y a tout dans ton code.
Merci de ce partage.
Agréable soirée à tous, prenez soin de vous !
Bonjour LucXIs,
Avec plaisir, mais ce code est juste une recomposition de ce que j'ai trouver sur ce forum.
Attention: si le fichier existe deja dans le dossier, il sera écrasé par le nouveau (Sans avertissement)
Enjoy
Bon weekend
Andreas