Moderate: Requires basic macro, coding, and interoperability skills.
SUMMARY
The Microsoft Access 97 Help Topic Example "Dynamic Data Exchange (DDE)
Example," which can be displayed by clicking Example on the following
topics,
- DDEEXecute Statement
- DDEInitiate Function
- DDEPoke Statement
- DDERequest Function
- DDETerminate Statement
- DDETerminateAll Statement
contains the following code:
Sub ExcelDDE()
Dim intI As Integer, intChan1 As Integer
Dim strTopics As String, strResp As String, strSheetName As String
On Error Resume Next ' Set up error handling.
intChan1 = DDEInitiate("Excel", "System") ' Establish link.
If Err Then ' If error occurs, Excel
Err = 0 ' may not be running.
' Reset error
Shell "C:\Excel\Excel.exe", 1 ' and start spreadsheet.
If Err Then Exit Sub ' If another error, exit.
' Establish Spreadsheet link.
intChan1 = DDEInitiate("Excel", "System")
End If
' Create new worksheet.
DDEExecute intChan1, "[New(1)]"
' Get topic list, worksheet name.
strTopics = DDERequest(intChan1, "Selection")
strSheetName = Left(strTopics, InStr(1, strTopics, "!") - 1)
' Terminate DDE link.
DDETerminate intChan1
' Establish link with new worksheet.
intChan1 = DDEInitiate("Excel", strSheetName)
For intI = 1 To 10
' Put some values into
DDEPoke intChan1, "R1C" & intI, intI
' first row.
Next intI
' Make chart.
DDEExecute intChan1, "[Select(""R1C1:R1C10"")][New(2,2)]"
' Terminate all links.
DDETerminateAll
End Sub
The first line of the code, which reads as follows, is incorrect:
Dim intI As Integer, intChan1 As Integer
Change this line to read as follows:
Dim intI As Long, intChan1 As Long.
This change is necessary when working with 32-bit applications.