Mailing word à partir de vb

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 019 fois - Téléchargée 81 fois

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

Ajouter un commentaire

Commentaires

cs_dchrist
Messages postés
39
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 mai 2015
-
Salut ,

J'ai utilisé cette méthode pour envoyers un document word depuis des macros en VB6. Or, mes entêtes et pieds de page ne passent pas.

Est-ce quelqu'un aurait une solution à me donner, s'il vous plaît ?
Merci tout plein, par avance.
cs_romsec
Messages postés
1
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
17 mars 2004
-
Ce programme permet-il d'envoyer des mails à une liste d'adresses définies sous word?
Est-il posssible de metrre une adresse copie?
Merci
ranouf
Messages postés
237
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
31 août 2009
-
Salut le prog que tu proposes c exactement ce sur quoi je bosse actuellement, cependant, je voulais savoir si il n'y avait pas plus simple que de passer par un fichier texte pour recuperer les infos, g une base de donnée sql server, je me connecte a celle ci grace a un fichier dsn.
Ce que j'merai c pouvoir me connecter a cette base par mon dsn pour remplir mes champs dans word...
Je sais que c dur voila deja tout une journée que je bosse dessus et l'aide VBA ne me donne pas la solution (comme c etrange ... ^^)
Si tu peux m'aider ça me depannerait enrnormement

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.