Excel Primary Interop - Feststellen, ob die Applikation noch läuft?

09/06/2009 - 18:12 von Christian Treffler | Report spam
Hallo,

ich arbeite gerade an einer kleinen Klasse (Visual Studio 2005, .Net
2.0, C#), mit der ich auf ExcelSheets zugreifen will. Verwendet wird die
Microsoft Excel 11.0 Object Library.
Soweit habe ich das ganz gut hin bekommen inklusive Exception Handling.

Allerdings bleibt eine Frage:
Ich öffne eine Datei mit folgendem Code:

if (XLApp == null) XLApp = new Excel.ApplicationClass();
XLApp.Visible = AppVisible;
XLBook =XLApp.Workbooks.Open(path,0,false,5,"","",true,
Excel.XlPlatform.xlWindows,"",true,false,0,true,
true,Excel.XlCorruptLoad.xlNormalLoad);

Die Datei wird làngere Zeit geöffnet bleiben. Es könnte jetzt passieren,
dass der Benutzer die Excel-Anwendung schließt. Wenn dann mein Programm
versucht, darauf zuzugreifen, wird eine Exception ausgelöst:
System.Runtime.InteropServices.COMException (0x80010108)
The object invoked has disconnected from its clients.

So weit, so logisch. Dieses Szenario möchte ich gerne abfangen, indem
ich bei jedem Zugriff meines Programms auf XLApp oder XLBook überprüfe,
ob die Objekte überhaupt noch vorhanden sind.

Die Frage ist nur, wie mache ich das?

TIA,
Christian
 

Lesen sie die antworten

#1 Frank Dzaebel
09/06/2009 - 19:41 | Warnen spam
Hallo Christian,

ich arbeite gerade an einer kleinen Klasse (Visual Studio 2005, .Net
2.0, C#), mit der ich auf ExcelSheets zugreifen will. Verwendet wird
die Microsoft Excel 11.0 Object Library.
Soweit habe ich das ganz gut hin bekommen inklusive Exception
Handling. Allerdings bleibt eine Frage:
Die Datei wird làngere Zeit geöffnet bleiben. Es könnte jetzt
passieren, dass der Benutzer die Excel-Anwendung schließt.



Ein mögliches Vorgehen ist:

[Wie Sie Excel automatisieren und feststellen, ob der Benutzer Excel beendet
hat]
http://support.microsoft.com/kb/192348


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen