exist (Excel-Tabellen Blatt) ???



  • Hallo zusammen,

    ich hab mal wieder ein kleines Problem.
    Ich öffne ein Excel-File und lese dort aus verschiedenen Tabellenblättern (Sheets) Daten ein. Nun kann es vorkommen das ein angegebenes Tabellenblatt nicht existert, worauf ich meine eigene Exception auslösen möchte.
    Wie kann ich jetzt feststellen das dass Tabellenbaltt nicht existiert und dann ein eigenes throw auslösen um den Fehler mit meiner Fehlerklasse bearbeiten?

    Der Quelltext sieht etwas so aus:
    Variant Excel = Variant::CreateObject("Excel.Application");
    Excel.OlePropertyGet("WorkBooks").OleFunction("Open",File.c_str());

    Hier müsste jetzt eine Abfrage rein (z.B. wie mit FileExists() ob das Sheet Sheetname existiert!??
    Wenn ja kann man es aufrufen:
    Variant Sheet = Excel.OlePropertyGet("Sheets", "Sheetname");

    Vielen Dank für Eure Hilfe
    Mirko



  • Die Standard-Exception ganz normal per try/catch abfangen und deine eigene werfen!?



  • Nein, genau anders herum. Die Standard Exception verwerfen und meine eigene verwenden!
    Also ich brauche nur eine Funktion die mir sagt ob das Tabellenblatt vorhanden ist oder nicht.

    Wenn ich versuche mit
    Variant Sheet = Excel.OlePropertyGet("Sheets", "Sheetname");
    darauf zu zugreifen, wird sofort die Standard-Exception ausgelöst. Hier möchte ich den Fehler aber selber behandeln....



  • Hallo

    genau das meint Jansen :

    try
    {
      Variant Sheet = Excel.OlePropertyGet("Sheets", "Sheetname");
      }
    catch(...)
    {
      throw MyException("Sheet Error");
      }
    

    Beachte, das im Debugmodus die Standerd-Exception von OlePropertyGet im BCB angezeigt wird, aber nicht im eigentlichen Programm erscheint.

    bis bald
    akari



  • Hallo akari,

    das ist wohl dann mein Fehler den ich nicht wusste. Mein Quellcode sieht genau so aus wie du schreibst, allerdings hab ich es nur beim Debugen probiert und da kam dann immer die Standard Exception.
    Also vielen Dank für Deine Hilfe...

    Schönen abend noch!
    Mirko


Anmelden zum Antworten