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.