XL97: Page Fault When Running DDE Macro or Closing Windows

Last reviewed: February 27, 1998
Article ID: Q169176
The information in this article applies to:
  • Microsoft Excel 97 for Windows

SYMPTOMS

When you run a Microsoft Visual Basic for Applications macro or procedure that uses dynamic data exchange (DDE) commands or you try to restart or shut down Microsoft Windows, one of the following error messages appears:

   Microsoft Windows 95
   --------------------

      This program has performed an illegal operation
      and will be shut down.

      If the problem persists, contact the program
      vendor.

   When you click Details, an error message similar to one of the following
   appears:

      EXCEL caused an invalid page fault in
      module OLEAUT32.DLL at 0137:65349854.

      EXCEL caused an invalid page fault in
      module EXCEL.EXE at 0137:302036d4.

   Microsoft Windows NT
   --------------------

      This Windows application cannot respond to the End Task
      request. It may be busy, waiting for a response from you, or
      it may have stopped executing.

      -or-

      An application error has occurred
      and an application error log is being generated.

      EXCEL.exe
      Exception access violation (0xc0000005),Address 0x30276e52.

CAUSE

This problem occurs when you do the following:

  • You run Visual Basic code that opens more than one DDE channel to a program and does not properly terminate the open channels.

        -and-
    
  • You do either of the following:

        - You quit Microsoft Windows.
    

            -or-
    
        - You run the same procedure or another procedure that creates a DDE 
          channel to the same program.
    
    

RESOLUTION

If you open a DDE channel, you must terminate the channel before you quit Microsoft Excel. To terminate a DDE channel, use the DDETerminate method, as in the following example:

   Application.DDETerminate <ChanNum>

where <ChanNum> is the channel number returned by the DDEInitiate method.

If you encounter this problem, restart Microsoft Windows, and then edit the macro or procedure in Microsoft Excel. Insert the DDETerminate statement into the appropriate location in the code. For more information, see the sample macro in the "More Information" section of this article.

STATUS

Microsoft has confirmed this to be a problem in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and 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 needs. If you have limited programming experience, you may want to contact the Microsoft fee-based consulting line at (800) 936-5200. For more information about the support options available from Microsoft, please see the following page on the World Wide Web:

   http://www.microsoft.com/support/supportnet/refguide/default.asp

The following macro creates two DDE sessions to Microsoft Excel, inserts a new workbook, and then terminates the DDE channels that it created.

To run this macro, follow these steps:

  1. Start Microsoft Excel 97. In a new workbook, press Alt+F11 to start the Visual Basic Editor.

  2. On the Insert menu, click Module and type the following macro in the module sheet:

          Sub DDESessions()
    
          Dim LobjExcelApp as Object
          Dim LwbNewWB as Object
             ' Perform commands within loop two times.
             For i = 1 to 2
                ' Create an object to Microsoft Excel.
                Set LobjExcelApp = CreateObject("Excel.application")
                ' Create workbook object.
                Set LwbNewWB = LobjExcelApp.Workbooks.Add
                ' Get DDE channel to Microsoft Excel.
                LwChanNum1 = Application.DDEInitiate("Excel", "System")
                ' Insert new workbook.
                Application.DDEExecute LwChanNum1, "[New]"
                ' Quit workbook.
                Application.DDEExecute LwChanNum1, "[Quit()]"
                ' Terminate this DDE channel.
                Application.DDETerminate LwChanNum1
             Next i
             MsgBox "DDESessions is complete"
    
          End Sub
    
    

  3. On the File menu, click "Close and Return to Microsoft Excel."

  4. In the workbook, click Macro on the Tools menu, and then click Macros. Click DDESessions, and then click Run. When the message box that indicates the macro is completed appears, click OK.

REFERENCES

For more information about creating DDE channels, click the Index tab in Visual Basic Help, type the following text

   DDEInitiate method

and then double-click the selected text to go to the "DDEInitiate Method" topic.


Additional query words: XL97
Keywords : kbcode kberrmsg xlvbainfo xlgpf
Version : WINDOWS:97
Platform : WINDOWS
Issue type : kbprb
Solution Type : kbworkaround


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