Probleme beim automatisierten Auslesen einer Excelzelle (MFC)
-
Hallo Ich hab ein Problem mit der Excelautomation mittels MFC.
Und zwar bekomm ich bei Ausführung folgender Programmzeilen ständig 0 als Rückgabewert.
COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR), vInt; vInt.vt = VT_I4; _Application oApp; oApp.CreateDispatch("Excel.Application"); Workbooks oBooks = oApp.GetWorkbooks(); _Workbook oBook = oBooks.Open("test.xls",vOpt,vOpt,vOpt, vOpt,vOpt,vOpt,vOpt,vOpt, vOpt,vOpt,vOpt,vOpt,vOpt,vOpt); Worksheets oSheets = oBook.GetWorksheets(); _Worksheet oSheet = oSheets.GetItem(COleVariant((short)1)); Range oRange; oRange =oSheet.GetRange(COleVariant("A1"),vOpt); vInt = oRange.GetValue2(); return vInt.lVal;
Sooo das Problem tritt immer auf wenn ich ein reines Zahlenfeld auslesen möchte. Steht in dem auszulesenden Feld eine Buchstaben-Zahlenkombination, bekomm ich einen Rückgabewert. Dieser ist natürlich irgendwas unssinniges, aber immerhin ein Rückgabewert. Versuche ich die Zelle mittels
vInt.vt = VT_BSTR;
return vInt.bstrVal;zu übergeben,erhalte ich ebenfalls bei einer reinen Zahlenkombination nichts. Mit der Buchstaben-Zahlenkombination gehts wieder. Also denke ich mal, es liegt eher daran, das ich eine reine Zahl nicht auslesen kann.
Nun zu meiner Frage: Kennt da jemand ne Lösung für?
PS: Ich nutze eine Automation von Office 2000 (Excel).
-
So also durch Zufall hab ich noch einen Befehl des Range-Objects gefunden
Variant range.GetText() // liefert einen BSTR zurück
der liefert den Inhalt der Zelle als Text zurück. Wie ich finde aber eine weniger schöne Lösung, da man erst den String wieder in eine int-Zahl verwandeln muss um mit ihm zu arbeiten. Also wenn jemand noch ne Idee hat, wie man den Zelleninhalt direkt in eine Integerzahl auslesen kann, immer her damit :).
-
Hallo,
welch includes braucht man für das Beispiel von dir?
Ich erhalte Fehler bei _Application oApp;
_Application ist unbekannt!
Die #include <afxdisp.h> ist drin, noch was?mfg
pixel