ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Extra reference after opening a file (https://www.excelbanter.com/excel-programming/321794-extra-reference-after-opening-file.html)

David Liebtag

Extra reference after opening a file
 
I am having trouble with an unexplained extra reference to Excel. I'm
hoping someone here can explain.

Here is some pseudo-code that illustrates what my code (that is written in
C) is doing:

IDIspatch * Dispatch
IDIspatch * Workbooks
IDIspatch * File
CoCreateInstance ("Excel.Application,&IDispatch)
Workbooks = PropertyGet(IDispatch,"Workbooks")
File = Invoke(Workbooks,"Open","d:\test.xls")
Workbooks::Release
File::Release
IDispatch::Release

After my program terminates, I see in the XP Task Manager that an instance
of Excel is still running. This does not happen if I skip the Open and
related Release steps.

Can anyone explain why Excel is still running?

Thanks in advance.

David Liebtag




Tom Ogilvy

Extra reference after opening a file
 
In VB, this is usually because of an unreleased reference. I don't know
anything about C and COM, but I would release in the opposite order that I
created

IDIspatch * Dispatch
IDIspatch * Workbooks
IDIspatch * File
CoCreateInstance ("Excel.Application,&IDispatch)
Workbooks = PropertyGet(IDispatch,"Workbooks")
File = Invoke(Workbooks,"Open","d:\test.xls")
File::Release
Workbooks::Release
IDispatch::Release

I have reversed the release of File and Workbook.

--
Regards,
Tom Ogilvy



"David Liebtag" wrote in message
...
I am having trouble with an unexplained extra reference to Excel. I'm
hoping someone here can explain.

Here is some pseudo-code that illustrates what my code (that is written in
C) is doing:

IDIspatch * Dispatch
IDIspatch * Workbooks
IDIspatch * File
CoCreateInstance ("Excel.Application,&IDispatch)
Workbooks = PropertyGet(IDispatch,"Workbooks")
File = Invoke(Workbooks,"Open","d:\test.xls")
Workbooks::Release
File::Release
IDispatch::Release

After my program terminates, I see in the XP Task Manager that an instance
of Excel is still running. This does not happen if I skip the Open and
related Release steps.

Can anyone explain why Excel is still running?

Thanks in advance.

David Liebtag






David Liebtag

Extra reference after opening a file
 
Tom,

Thanks, but I had already tried that.

David




David Liebtag

Extra reference after opening a file
 
I solved the problem. The Open method returns a Workbook object. You have
to call the Workbook's Close method before releasing it.

David Liebtag





All times are GMT +1. The time now is 05:11 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com