Pb de fusion vers Word en VBA

Le
steph.theo
Bonjour,

Je veux effectuer une fusion automatique depuis Access 2007
Et je n'y arrive pas !

J'ai d'abord testé l'exemple de l'aide :

Dim docNew As Document

Set docNew = Documents.Add

With docNew.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource _
Name:="C:Program FilesMicrosoft Office" & _
"OfficeSamplesNorthwind.mdb", _
LinkToSource:=True, AddToRecentFiles:=False, _
Connection:="TABLE Orders"
End With

Mais le problème est qu'une fenètre s'ouvre ds Word pour me demander
sur quel table travailler
Et puis ca plante une fois sur 2 en m'indiquant que la Base ne peut
être ouverte

Là j'en suis là et ca ne marche toujours pas

Bon il me reste la solution de créer des états dans Access je sais
mais le système de fusion dans Word me permettrait d'avoir plus de
souplesse et de facilité dans la création .

Merci de votre aide


Private Sub CommandeLettreWord_Click()

==
==
==

'Utilisation d'une requete création pour générer la table
TableVisiteClassement que je veux utiliser avec Word

DoCmd.SetWarnings False
DoCmd.OpenQuery "VisiteClassement"
DoCmd.SetWarnings True

MsgBox "Export Fait"

==
'Commander la fusion dans word


Dim wdapp As Word.Application

'Démarrer Word
Set wdapp = CreateObject("Word.application")

With wdapp
.Visible = True

'ouvrir le document
.Documents.Open "E:Visite.docx"

'Diriger le publipostage vers un nouveau document
.ActiveDocument.MailMerge.OpenDataSource Name:= _
"E:CDT.accdb" _
, ConfirmConversions:=False, ReadOnly:=False,
LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="",
PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source==
E:
CDT.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System
database="""";Jet OLEDB:Registry Pat" _
, SQLStatement:="SELECT * FROM `TableVisiteClassement`",
SQLStatement1:= _
"", SubType:=wdMergeSubTypeAccess

.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
.ActiveDocument.MailMerge.Execute
.ActiveDocument.SaveAs FileName:="E:test.docx"
.ActiveDocument.Close
.ActiveDocument.Close

End With

'fermer et libérer les objets
wdapp.Quit
Set wdapp = Nothing


End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Goupil
Le #17443231
Salut,

Personnellement, je crée un requête création de table.
Cette requête crée une table dans une base externe.
Ensuite, on lance l'ouverture d'un document Word déjà fusionné avec cette
table et le tour est joué.

Pour éviter un message d'avertissement, il est conseillé de désactiver les
warnings dans la base de registre pour ne pas être obligé chaque fois de
cliquer deux fois sur OK.

"SQLSecurityCheck"=dword:00000000

1.
Démarrez l'Éditeur du Registre.

2.
Recherchez la clé de Registre suivante et cliquez dessus :

HKEY_CURRENT_USERSoftwareMicrosoftOffice11.0WordOptions

3.
Cliquez sur Edition, pointez sur Nouveau, puis cliquez sur Valeur
DWORD.

4.
Sous Nom, tapez :

SQLSecurityCheck

5.
Double-cliquez sur SQLSecurityCheck.

6.
Dans la zone Données de la valeur, tapez :

00000000

7.
Cliquez sur OK.






Bonjour,

Je veux effectuer une fusion automatique depuis Access 2007 ...
Et je n'y arrive pas !

J'ai d'abord testé l'exemple de l'aide :

Dim docNew As Document

Set docNew = Documents.Add

With docNew.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource _
Name:="C:Program FilesMicrosoft Office" & _
"OfficeSamplesNorthwind.mdb", _
LinkToSource:=True, AddToRecentFiles:úlse, _
Connection:="TABLE Orders"
End With

Mais le problème est qu'une fenètre s'ouvre ds Word pour me demander
sur quel table travailler ...
Et puis ca plante une fois sur 2 en m'indiquant que la Base ne peut
être ouverte ...

Là j'en suis là ... et ca ne marche toujours pas ...

Bon il me reste la solution de créer des états dans Access je sais
mais le système de fusion dans Word me permettrait d'avoir plus de
souplesse et de facilité dans la création ....

Merci de votre aide


Private Sub CommandeLettreWord_Click()

============================================================================= 'Utilisation d'une requete création pour générer la table
TableVisiteClassement que je veux utiliser avec Word

DoCmd.SetWarnings False
DoCmd.OpenQuery "VisiteClassement"
DoCmd.SetWarnings True

MsgBox "Export Fait"

====================== 'Commander la fusion dans word


Dim wdapp As Word.Application

'Démarrer Word
Set wdapp = CreateObject("Word.application")

With wdapp
.Visible = True

'ouvrir le document
.Documents.Open "E:Visite.docx"

'Diriger le publipostage vers un nouveau document
.ActiveDocument.MailMerge.OpenDataSource Name:= _
"E:CDT.accdb" _
, ConfirmConversions:úlse, ReadOnly:úlse,
LinkToSource:=True, _
AddToRecentFiles:úlse, PasswordDocument:="",
PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="",
Revert:úlse, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID­min;Data Source=E:
CDT.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System
database="""";Jet OLEDB:Registry Pat" _
, SQLStatement:="SELECT * FROM `TableVisiteClassement`",
SQLStatement1:= _
"", SubType:=wdMergeSubTypeAccess

.ActiveDocument.MailMerge.Destination = wdSendToNewDocument
.ActiveDocument.MailMerge.Execute
.ActiveDocument.SaveAs FileName:="E:test.docx"
.ActiveDocument.Close
.ActiveDocument.Close

End With

'fermer et libérer les objets
wdapp.Quit
Set wdapp = Nothing


End Sub
steph.theo
Le #17445401
Merci Goupil ...

J'avais en effet utilisé une requete création de table ... mais au
sein de la même base de données et il se produisait parfois des
verrouillages ...

Je vais tester la suppression du message d'avertissement SQL.

Bon maintenant mon code marche avec :

Mais j'ai encore un petit soucis : c'est sur la fin ...
Je fusionne et ferme le document avec

objWord.MailMerge.Execute
objWord.Close savechanges:=wdDoNotSaveChanges

Est ce que je peut manipuler l'autre document en VBA c'est à dire
celui qui a été créé par la fusion ???

Merci



Private Sub CommandeLettreWord_Click()


'Confirmation
If MsgBox("Confirmer la création de la lettre", vbYesNo,
"Confirmation") <> vbYes Then Exit Sub

'Valide l'enregistrement en cours afin qu'il soit exporté lors de la
requete création
DoCmd.RunCommand acCmdSaveRecord

'Exécution de la requete création
DoCmd.SetWarnings False
DoCmd.OpenQuery "VisiteClassement"
DoCmd.SetWarnings True

'Ouverture du doc WORD
Dim objWord As Word.Document
Set objWord = GetObject("E:Visite.docx", "Word.Document")

' Rend Word visible important puisque la fusion se fait à l'écran.
objWord.Application.Visible = True

' Sélectionne la source de données pour la fusion

objWord.MailMerge.OpenDataSource _
Name:="E:Base.accdb", _
LinkToSource:=True, _
Connection:="TABLE ExportPublipostage", _
SQLStatement:="SELECT * FROM [ExportPublipostage]"

' Exécution de la fusion.
objWord.MailMerge.Destination = wdSendToNewDocument
objWord.MailMerge.Execute
objWord.Close savechanges:=wdDoNotSaveChanges

Set objWord = Nothing

End Sub
Publicité
Poster une réponse
Anonyme