Mailing word à partir de vb

Contenu du snippet

Ce petit programme permet de faire un fusion de document en vu d'un mailing sous word … partir de VB
un fichier DOT sous le format word doit exister.
Il doit contenir des champs de fusions relatifs au fichier de donn‚es (sous format texte séparé par des points virgule ).
Thierry RICARD

Source / Exemple :


'Creation de la fusion
Dim mvarDocumentId As Variant
Dim objWord As Word.Application
Set objWord = CreateObject("Word.Application.8")
Set mvarDocumentId = objWord.Documents.Add(CStr("chemin du fichier DOT") + CStr("Nom du fichier DOT"), False)
objWord.ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
              
objWord.ActiveDocument.MailMerge.OpenDataSource Name:= _
App.Path & "Nom du fichier TXT", _
ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"DSN=Text Files;DBQ=" & App.Path & ";DefaultDir=" & App.Path & ";DriverId=27;MaxBufferSize=2048;PageTimeout=5;" _
, SQLStatement:="SELECT * FROM `Nom du fichier TXT`", SQLStatement1:=""
                
With objWord.ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
objWord.ActivePrinter = "Xerox 4512 PCL5e"
'"Xerox DocuPrint P8e PCL-5e"

objWord.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= _
wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
Collate:=True, Background:=True, PrintToFile:=False
                
objWord.ActivePrinter = "Xerox 4512 PCL5e"
                        
mvarDocumentId.Close False
'attente que l'impression des documents soit finis avant de quitter word
While objWord.BackgroundPrintingStatus <> 0
Wend
    
objWord.Quit wdDoNotSaveChanges 'je ne sauvegarde pas les documents … la fin de l'impression
Set objWord = Nothing
 'Fin Creation de la fusion

Conclusion :


Exemple fichier txt :
NOM;PRENOM;AGE
TOTO;ZZZZZ;20
TITI,YYYYY;30
...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.