Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

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.

'************* Module Start *************
'
Option Compare Database
Option Explicit
Dim mstAppTitle As String

Function fSetAccessCaption() As Boolean
Dim dbs As Database
Const cPropNotExit = 3270

    'retrieve old title
    Set dbs = CurrentDb
    On Error Resume Next
    mstAppTitle = dbs.Properties("AppTitle")

    'if property doesn't exist
    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

        'restore the caption
        Call sRestoreTitle
    End If
End Function
'************* Module End *************

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer