Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Imprimer un document Word 6 depuis Access par DDE

Ancien nº de publication de cet article : F12844
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.
Symptômes

Comment imprimer une lettre écrite avec Microsoft Winword 6.0 pour
Windows depuis Microsoft Access pour Windows ?


Résolution

Vous pouvez réaliser cette opération en utilisant l'échange dynamique de
données (DDE en anglais pour Dynamic Data Exchange) entre ces 2
applications. Ce mécanisme vous permet en effet de piloter Winword depuis
du code Access basic et même de lui envoyer des données.


EXEMPLE :

Lancez Microsoft Winword 6.0 pour Windows et créez dans un répertoire de
données un document dans lequel vous allez insérer 2 signets, le premier
de nom NomPersonne et le second de nom LieuVacances. Sauvez ce document
sous le nom vacances.doc et notez le répertoire de sauvegarde.
Ouvrez maintenant une base de données et dans un module de nom Imprimer
vers Winword, définissez une fonction Access basic ImprimeDoc avec 3
paramètres qui sont le nom du document Winword à imprimer, le nom de la
personne ainsi que le lieu des vacances. La fonction se présente alors
comme suit :

NOTA : Le caractère _ indique que l'instruction se poursuit sur la ligne
suivante.


Function ImprimeDoc (Lettre As String, Vacancier As String, Lieu As _
String)

' Lettre : nom du document WinWord à imprimer (avec son chemin)
' Vacancier : nom de la personne à remplacer le signet NomPersonne
' Lieu : lieu des vacances associé au signet LieuVacances


On Error GoTo TraitErreur

' ouverture du canal DDE entre Winword et Microsoft Access.
' En cas d'erreur numéro 282, WinWord est lancé
' dans la gestion des erreurs
canal = DDEInitiate("Winword", "system")

' ouverture du fichier Lettre dans l'application WinWord
DDEExecute canal, "[FichierOuvrir " & Chr(34) & Lettre & _
Chr(34) & "]"

' après avoir ouvert le fichier dans WinWord, on réinitialise le
' canal DDE avec le sujet du nom du document pour pouvoir
' accéder aux signets de ce dernier
canal = DDEInitiate("WinWord", Lettre)

' écriture des 2 variables dans les signets WinWord.
DDEPoke canal, "NomPersonne", Vacancier
DDEPoke canal, "LieuVacances", Lieu

' lancement de l'impression de ce fichier
DDEExecute canal, "[FichierImprimer .Nomfichier=" & _
Chr(34) & Lettre & Chr(34) & "]"

' fermeture du canal DDE
DDETerminate canal
Exit Function

TraitErreur:
Select Case Err
Case 282
' Impossible d'ouvrir un canal DDE. Microsoft Access
' n'a pu trouver le sujet de l'application spécifiée
' ou l'application elle-même.

' WinWord est donc démarré à l'aide de shell
LancerWord = Shell("e:\applis\winword\winword.exe")

' retour sur le DDEInitiate qui a provoqué cette erreur
Resume
Case 286
'Délai d'attente de la réponse DDE dépassé.

MsgBox " Word n'a pas pu ouvrir le fichier " & Lettre
DDETerminate canal
Exit Function
Case Else
' une erreur non déterminée est survenue

MsgBox " Une erreur est survenue dans la fonction _
ImprimeDoc "
DDETerminate canal
Exit Function
End Select

End Function

Appelez cette fonction, sur la propriété Sur pression d'un bouton de
commande dans un formulaire en tapant par exemple :
=ImprimeDoc("e:\document\vacances.doc";"Jean-Michel Dupont";"Ibiza")


REMARQUE :

Le caractère * dans le code indique que l'instruction se poursuit sur la
ligne suivante.
Propriétés

ID d'article : 462844 - Dernière mise à jour : 03/01/2004 18:04:17 - Révision : 3.0

Microsoft Access 1.0 Standard, Microsoft Access 1.1 Standard, Microsoft Access 2.0 Standard

  • KB462844
Commentaires
; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" ="https://c1.microsoft.com/c.gif?DI=4050&did=1&t=">