---Soumis par Dev Ashish---
Mailmerge démarre une nouvelle instance d'Access.
(Q) Quand j'utilise Mailmerge de Microsoft Word avec une base de donnée Access, une nouvelle instance d'Access démarre. Comment éviter cela?
(A) Word Mailmerge utilise le DDE pour repérer une fenêtre dont le titre est "Microsoft Access". En Access 95 et 97, si vous utilisez Application Title (menu Tools/Startup), le titre fourni remplace "Microsoft Access" et le lien DDE est incapable de trouver l'application cherchée, Word démarre donc une nouvelle instance d'Access et essaie d'ouvrir la base de données.
On peut controuner le problème comme suit:
a - Enlever le titre local de l'application pour la base de données.
b - Utiliser ODBC pour passer-outre Access et accéder ainsi aux tables de
données.
Dans la plupart des cas, changer temporairement le titre de l'application pour "Microsoft Access" fonctionne fort bien. Essayer cette fonction avant d'adopter la stratégie impliquant ODBC.
'************* Module Start *************
'
Option Compare Database
Option Explicit
Dim mstAppTitle As String
Function fSetAccessCaption() As Boolean
Dim dbs As Database
Const cPropNotExit = 3270
'Conserve le titre actuel
Set dbs = CurrentDb
On Error Resume Next
mstAppTitle = dbs.Properties("AppTitle")
'si la propriété n'existe pas...
If Err = cPropNotExit Then
fSetAccessCaption = False
Else
dbs.Properties("AppTitle") = "Microsoft Access"
RefreshTitleBar
fSetAccessCaption = True
End If
End Function
Sub sRestoreTitle()
CurrentDb.Properties("AppTitle") = mstAppTitle
RefreshTitleBar
End Sub
Function fMailMerge()
Dim objWord As Word.Document
Dim stMergeDoc As String
If fSetAccessCaption Then
On Error Resume Next
stMergeDoc = "J:\install\Access mdbs\mailmerge.doc"
Set objWord = GetObject(stMergeDoc, "Word.Document")
objWord.Application.Visible = True
objWord.MailMerge.OpenDataSource _
Name:=CurrentDb.Name, _
LinkToSource:=True, _
Connection:="TABLE Customers", _
SQLStatement:="Select * from [Customers]"
objWord.MailMerge.Execute
'ramène le titre désiré
Call sRestoreTitle
End If
End Function
'************* Module End *************