Excel beenden
-
Hallo,
ich möchte von einer MFC-Anwendung aus Daten (über OLE ) in ein Excel-Sheet eintragen.
Dafür habe ich ein _Application, Workbook, Worksheet... Objekt erstellt.
Das Öffnen und Eintragen der Daten funktioniert auch einwandfrei, jedoch das Schliessen von Excel macht mir noch Probleme.
Beim Beenden der Anwendung gibts eine Zugriffsverletzung bei "ReleaseDispatch"
und der Process EXCEL.EXE wird nicht beendet.Hat vielleicht jemand hierzu eine Idee ???
-
die Zugriffsverletzung kommt daher, daß ein Object (Worksheet, Cell, Range etc.) released werden soll, das schon nicht mehr existiert -> falscher Reference-Count.
Wie erzeugst du die Instanzen (CoCreateInstance)?
Wie ruftst du die Methoden und Eigenschaften der Excel-Objekte auf?
-
ich habe 3 Funktionen:
1. StartExcel ()
- app mit CreateDispatch erzeugt
app.GetWorkboos()
books.AttachDispatch (lpDisp )
books.Open (...)
book.AttachDispatch (lpDisp )
book.GetSheets ()
sheets.AttachDispatch (lpDisp )u.s.w.
2. Write ()
range = sheet.GetRange(COleVariant("B2"),COleVariant("B2"));
range.SetValue (COleVariant("Test");
book.Save ();3. EndExcel ()
sheet.ReleaseDispatch() verursacht schon die Zugriffsverletzung
-
ersetze mal COleVariant("xxx") durch A2BSTR("xxx") (dazu mußt du vorher "USES_CONVERSION;" aufrufen)
-
@Codewalker
Die Funktionen verlangen VARIANT als Parameter, NICHT BSTR !
-
ah so - trotzdem liegt denn da der Fehler, denn COleVariant != VARIANT. Hab ich meine leidvollen Erfahrungen mit *g*. Also, mal VARIANT benutzen.
-
COleVariant != VARIANT
Wiederum falsch, auch 'ne angezogene Frau is noch 'ne Frau
-
*LOL* stimmt schon - aber würdest du eine nackte Frau genauso behandeln wie eine angezogene ???
COM tut's jedenfalls nich...
-
Vor dem lieben Gott sind alle Frauen gleich
(ach ne, das waren ja Menschen)