Bugs: Mailmerge démarre une nouvelle instance d'Access |
Author(s) 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 la propriété Application Title pour modifier le titre de la fenêtre, la rechercher par lien DDE ne la reconnaît plus et l'application appelante (Word) démarre une nouvelle instance.
Une solution de contournement est donc:
a) - d'enlever l'assignation faite à Application Title pour cette application
b) - Utiliser ODBC pour court-circuiter Access et obtenir accès aux tables sans passer par Access
Cependant, temporairement remettre le titre à "Microsoft Access" fonctionnera. Voici donc une fonction qui implémente cette stratégie, à essayer avant de passer à ODBC.
Option Compare Database
Option Explicit
Dim mstAppTitle As String
Function fSetAccessCaption() As Boolean
Dim dbs As Database
Const cPropNotExit = 3270
Set dbs = CurrentDb
On Error Resume Next
mstAppTitle = dbs.Properties("AppTitle")
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
Call sRestoreTitle
End If
End Function
|