ID: Q103258
The information in this article applies to:
Advanced: Requires expert coding, interoperability, and multiuser skills.
When you are quitting Microsoft Excel over a dynamic data exchange (DDE) channel in Microsoft Access versions 1.1, 2.0, and 7.0, you may receive the following error message:
The Other Application Quit
In Microsoft Access 97, you may receive the following error message:
Run-time error '291'.
The other application in the DDE conversation quit unexpectedly.
Restart the other application before reinitiating the DDE conversation.
Microsoft Excel version 4.0 automatically closes down any open DDE channels when quitting, rather than waiting for the DDE channels to be closed properly.
You can use one of the following two methods to work around this behavior. First, you can add an On Error Resume Next statement to your Microsoft Access function before the DDE quit command. The following sample function demonstrates this method:
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"")]"
AppActivate "Microsoft excel"
On Error Resume Next
DDEExecute chan, "[quit]"
DDETerminate chan
End Function
Second, you can have Microsoft Excel quit on its own, rather than having
Microsoft Access send the quit instruction. You can do this by having the
second to last line in a Microsoft Excel macro call another macro. The
first macro will contain a line similar to
=ON.TIME(NOW()+"0:0:3","Leave")
that will call a second macro in three seconds. The second macro will
contain the two lines:
=QUIT()
=RETURN()
You can remove the DDE quit command from your Microsoft Access function
if you use this method.
The following sample function will open Microsoft Excel and run a macro named Message. When the function instructs Microsoft Excel to quit, the error message mentioned in the "Symptoms" section will occur.
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"")]"
AppActivate "Microsoft excel"
DDEExecute chan, "[quit]"
DDETerminate chan
End Function
For more information about the DDEInitiate() function, search the Help Index for "DDEInitiate," or ask the Microsoft Access 97 Office Assistant.
Additional query words:
Keywords : kberrmsg kbinterop
Version : 1.1 2.0 7.0 97
Platform : WINDOWS
Hardware : x86
Issue type : kbprb
Last Reviewed: November 20, 1998