DDE Macro with Microsoft Excel as Client & FoxPro as Server

ID: Q121957

2.5x 2.60 2.60a WINDOWS kbinterop kbmacro

The information in this article applies to:

SUMMARY

FoxPro for Windows can be used as a dynamic data exchange (DDE) server if DDEDATA.APP is run before the DDE link is established from Microsoft Excel. DDEDATA.APP, which is included with FoxPro for Windows, sets up FoxPro as a DDE server.

Connecting to FoxPro as a DDE server is a little different than connecting to other DDE servers from Microsoft Excel. See below for an example of Microsoft Excel Visual Basic for Applications macro code used to make the connection to FoxPro.

MORE INFORMATION

Set Up FoxPro as a DDE Server

To set up FoxPro as a server, perform the following:

1. Using Project Manager, open the DDEDATA.PJX file located in the

   <FoxPro_directory>\SAMPLE\DDE subdirectory.

2. Build the application, using the default name DDEDATA.APP.

3. Run DDEDATA.APP.

Connect to FoxPro from Microsoft Excel Using Visual Basic for Applications

In Microsoft Excel, type the following lines of code in a Visual Basic for Applications module sheet in a workbook:

   Sub foxddetest()

     ChannelNumber = Application.DDEInitiate _
   ("ddedata","c:\fpw26\tutorial\;table invoices")

     returnList = Application.DDERequest(ChannelNumber, "firstrow")

     For i = LBound(returnList) To UBound(returnList)
       Cells(2, i).Formula = returnList(i)
     Next i

     Application.DDETerminate ChannelNumber

   End Sub

The DDEInitiate() command opens a channel to FoxPro. The first argument, the application or service name, is "ddedata" because DDEDATA.APP is running in FoxPro. The second argument, the topic, is the path to the database table, followed by a semicolon, and then the table name. The variable ChannelNumber contains a numeric value that represents the DDE channel link.

The DDERequest() command's first argument is the channel number (or its variable). The second argument is the requested item. Items that can be requested include: ALL, DATA, FIELDCOUNT, FIELDNAMES, FIRSTROW, LASTROW, NEXTROW, and PREVROW. Other topics can be programmed within FoxPro beforehand. This example requests the information from the first row of the database, which is returned to Microsoft Excel in an array.

The For ... Next loop retrieves the information and places it in the active sheet of the workbook. This macro should be run from a worksheet, not the module sheet, through the Tools and Macros menu options.

REFERENCES

FoxPro for Windows "Developer's Guide," version 2.5, pages D12-12 to D12-20

Microsoft Excel "Visual Basic User's Guide," version 5.0, pages 209-217

Additional reference words: FoxWin 2.50 2.50a 2.50b 2.60 2.60a KBCategory: kbinterop kbmacro KBSubcategory: FxinteropDde

Keywords          : kbcode FxinteropDde 
Version           : 2.5x 2.60 2.60a
Platform          : WINDOWS

Last Reviewed: May 22, 1998