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


Anmelden zum Antworten