ACC97: Dynamic Data Exchange DDE Example Contains Invalid Syntax

Last reviewed: September 30, 1997
Article ID: Q174498
The information in this article applies to:
  • Microsoft Access 97

SUMMARY

Moderate: Requires basic macro, coding, and interoperability skills.

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.

MORE INFORMATION

The Microsoft Access 97 Help Topic "Convert Access Basic Code to Visual Basic" states the following:

   If you use the DDEInitiate function to open a DDE channel, you can
   declare the variable that stores the channel number, which is a Long
   value, as either a Variant or Long value. In versions 1.x and 2.0 of
   Microsoft Access, the channel number is an Integer value, so you must
   modify any Declaration statements in your code that create variables
   of type Integer to store the channel number.


Additional query words: ACC97 inf
Keywords : kbother
Version : WINDOWS:97
Platform : WINDOWS
Hardware : x86
Issue type : kbdocerr
Solution Type : Info_Provided


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: September 30, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.