Kapitel 13: Programmschnittstellen
Option Explicit
Abrufen von Daten:
Function DDE(App, Topic, Item)
Dim chan
On Error GoTo ErrnewDDE
chan = ddeinitiate(App, Topic)
DDE = DDERequest(chan, Item)
DDETerminate chan
ByenewDDE:
Exit Function
ErrnewDDE:
DDE = "#DDEERROR"
Resume ByenewDDE
End Function
Daten übertragen:
Function DDESend(App, Topic, Item, DataToSend)
Dim chan
On Error GoTo ErrnewDDESend
chan = ddeinitiate(App, Topic)
DDEPoke chan, Item, DataToSend
DDETerminate chan
DDESend = True
ByenewDDESend:
Exit Function
ErrnewDDESend:
DDESend = False
Resume ByenewDDESend
End Function
VBA-Programmierung
Genügen Ihnen die Möglichkeiten von DDE() und DDESenden() nicht, sollten Sie sich mit der VBA-
Programmierung von DDE-Verbindungen anfreunden. Der prinzipielle Ablauf ist in jedem Fall gleich:
■ Initialisieren der Verbindung mit DDEInitiate
■ Anfordern von Daten mit DDERequest, Senden von Daten mit DDEPoke oder Senden von Befehlen mit
DDEExecute
■ Abbau der Verbindung mit DDETerminate
Für alle Funktionen benötigen Sie die Kanalnummer, die Ihnen von der DDEInitiate-Funktion zurückge-
geben wird.
852
BEISPIEL
HINWEIS
BEISPIEL
Übertragung von Daten an ein Excel-Tabellenblatt:
On Error Resume Next
Dim Kanalnr, i
Verbindungsaufbau:
Kanalnr = DDEInitiate("Excel", "Tabelle1")
If Err Then Exit Sub
Datenübertragung:
DDEPoke Kanalnr, "Z1S1", 17
Verbindungsabbau:
DDETerminate Kanalnr
Geöffnete Kanäle müssen Sie unbedingt wieder schließen, da sonst Systemressourcen blockiert werden. Mit der
Anweisung DDETerminateAll können Sie beim Programmende eventuell noch geöffnete Kanäle schließen.
Öffnen einer Excel-Datei und Datenübertragung in beide Richtungen
Private Sub Befehl9_Click()
On Error Resume Next
Dim Kanalnr
Allgemeine Verbindung zu Excel öffnen:
Kanalnr = ddeinitiate("Excel", "System")
Datei öffnen:
DDEExecute Kanalnr, "[OPEN(" & Chr(34) & "c:\mappe1.xlsx" & Chr(34) & ")]"
DDETerminate Kanalnr
Jetzt brauchen wir eine neue Kanalnummer für die Arbeitsmappe:
Kanalnr = ddeinitiate("Excel", "mappe1.xlsx")
Datenübertragung:
DDEPoke Kanalnr, "Z1S1", Text2.Value
Datenabfrage:
Text4.Value = DDERequest(Kanalnr, "Z1S1")
Beenden:
DDETerminate Kanalnr
End Sub
853
DDE
Get Microsoft Office Access 2007-Programmierung - Das Handbuch now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.