Excel: Communication Between Excel and Access Using DDE

Last reviewed: September 12, 1996
Article ID: Q99845

The information in this article applies to:

  • Microsoft Excel for Windows, version 4.0
  • Microsoft Access version 1.0

SUMMARY

This article contains examples that demonstrate how Microsoft Excel and Microsoft Access can communicate through dynamic data exchange (DDE). The first example discusses a macro developed for Microsoft Excel version 4.0 for Windows that starts Microsoft Access, loads a database, and runs a macro. The second example discusses a Microsoft Access Basic function that loads Microsoft Excel and runs a macro.

MORE INFORMATION

Running a Microsoft Access Macro from Microsoft Excel

To run a Microsoft Access macro from Microsoft Excel, do the following (note that these steps assume that a macro called MESSAGE already exists in Microsoft Access):

  1. In Microsoft Excel, choose New from the File menu, select Macro Sheet and choose OK.

  2. Enter the following macro into the macro sheet (you will need to alter the macro to specify the appropriate locations for files on your computer):

          =EXEC("c:\access\msaccess.exe c:\access\db4.mdb")
          Chan=INITIATE("MSACCESS","system")
          =APP.ACTIVATE("Microsoft Access")
          =EXECUTE(Chan,"MESSAGE")
          =TERMINATE(Chan)
          =RETURN()
    

  3. To run the macro, select the first cell, choose Run from the Macro menu and choose OK.

The EXEC() function in the macro loads Microsoft Access minimized and loads the DB4.MDB database. The macro initiates a DDE channel and assigns it to the variable Chan. The APP.ACTIVATE() function switches to the Microsoft Access window to show the macro actions running.

The EXECUTE() function runs a macro named MESSAGE, as follows:

   Name Summary
   ------------

   Application Name: "MSACCESS"
   Window Title: "Microsoft Access"
   Topic: "System"
   Item: "Message"

Running a Microsoft Excel Macro from Microsoft Access

To run a Microsoft Excel macro from Microsoft Access, do the following (note that these steps assume that a macro named Message already exists in a Microsoft Excel macro sheet named MACRO1.XLM):

  1. In Microsoft Access, create a new function that contains the following text (you will need to alter the macro to specify the appropriate locations for files on your computer):

          Function CallExcel ()
    
              Dim Chan
              x = Shell("c:\excel\excel.exe c:\excel\macro1.xlm", 1)
              Chan = DDEInitiate("Excel", "System")
              DDEExecute Chan, "[Run(""macro1.xlm!Message"")]"
              DDETerminate Chan
          End Function
    
    

  2. Run the macro. For more information on how to run the macro, see the "Running" topic under "Macros" in Microsoft Access Help.

The Shell function loads Microsoft Excel and the MACRO1.XLM macro sheet full screen and leaves the focus on Microsoft Excel. The macro initiates a DDE channel and assigns it to the variable Chan.

The EXECUTE() function runs a macro named Message.

      Name Summary
      ------------

      Application Name: "Excel"
      Window Title: "Microsoft Excel"
      Topic: "System"
      Item: "[Run(""macro1.xlm!Message"")]"

The syntax for these two macros demonstrates that the correct syntax for the "Item" depends on the target application.

REFERENCES

Microsoft Access README.TXT Microsoft Excel "Function Reference"


KBCategory: kbinterop
KBSubcategory:

Additional reference words: 4.00 1.00 interoperability



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 12, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.