Bonjour à tous.
C'est un sujet que j'essaie de creuser depuis longtemps mais qui n'est que très peu documenté sur le web: Comment contrôler une application tierce a MS Office sous windows via VBA?
L'objectif est de créer un lien (pont-connexion) d'un outil Office (Excel/Access) afin d'effectuer des manipulation sur une application windows, par exemple coller le clipboard dans paint ou dans notepad. Par soucis d'efficacité, je ne souhaite pas utiliser la commande sendkeys à laquelle nous ne pouvons pas faire confiance.
A ma connaissance il existe une methode DDE qui le permettrait mais il semble qu'elle soit obsolète. Pouvez-vous confirmer ?
Voici un code utilisant DDE afin de se connecter à Word et de lui envoyer la commande Impression
"En essayant de le modifier afin de coller notre clipboard sur paint, voici le code qui ne fonctionne pas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 channelNumber = Application.DDEInitiate( _ app:="WinWord", _ topic:="C:\FORMLETR.DOC") Application.DDEExecute channelNumber, "[FILEPRINT]" Application.DDETerminate channelNumber
Resultat:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 channelNumber = Application.DDEInitiate( _ app:="mspaint", _ topic:="C:\Test.png") Application.DDEExecute channelNumber, "[PASTE]" Application.DDETerminate channelNumber
J'ai une erreur "Run time error '13': Type missmatch" à la première ligne bien que le fichier s'ouvre.
Essayons avec le notepad:
Resultat: même erreur que précédement malgré l'ouverture du document.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub DDEtoBlocNotes() Dim Datarange As Range chan = Application.DDEInitiate(app:="NOTEPAD", topic:="C:\Users\User1\Documents\Access\Test.txt") Set Datarange = ThisWorkbook.Worksheets("Sheet1").Range("A1") Datarange.Copy Application.DDEExecute chan, "[EDITIONCOLLER]" Application.DDETerminate chan End Sub
"Run time error '13': Type missmatch"
Pouvez-vous m'aider à résoudre ce problème svp ?
Avez vous de la documentation sur les attributs des commandes DDE?
Connaissez vous une autre façon de se connecter à une application tierce afin de lui envoyer des commandes ? (OLE/ODBC/ADO) ?
Merci d'avance pour vos réponses.
Partager