Microsoft KB Archive/142358

= Visual Basic Example Using ODBCLogon =

Article ID: 142358

Article Last Modified on 8/17/2005

-

APPLIES TO


 * Microsoft Excel 97 Standard Edition
 * Microsoft Excel 95 Standard Edition
 * Microsoft Excel 5.0 Standard Edition

-



This article was previously published under Q142358





SUMMARY
In Microsoft Excel, dynamic data exchange (DDE) can be used in Visual Basic for Applications to communicate with Microsoft Query. The ODBCLogon command allows an application to connect to a data source using DDE.



MORE INFORMATION
Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements. The following macro example connects to the NWind data source, runs a query, and returns the result to Sheet1 in the workbook that contains the macro code. When you use the following macro, Microsoft Query needs to be running. When you use the macro in Microsoft Excel 7.0, you must create a data source called "NWind" that uses the dBASE files in the MSQuery directory. Sub UsingODBCLOgon

' Dimension the variables. Dim chan As Integer Dim NumRows Dim NumCols

' Initiate a DDE channel to Msquery. chan = DDEInitiate("MSQuery", "System")

' Execute the ODBCLogon command. DDEExecute chan, "[ODBCLogon('DSN=NWind',0)]"

' Execute a SQL statement. DDEExecute chan, "[Open('Select * From Customer')]"

' Request the number of rows. NumRows = DDERequest(chan, "NumRows")

' Request the number of columns. NumCols = DDERequest(chan, "NumCols")

' Return the data to Sheet1. DDEExecute chan, "[Fetch('Excel','Sheet1','R1C1:R" & NumRows(1) & _     "C" & NumCols(1) & "','All/Headers')]"

' Close the DDE channel. DDETerminate chan

End Sub

