OLEContainer und Excel



  • Hallo zusammen

    Ich möchte ein Office Dokument mittels OLEContainer öffnen, dieses in einem Verzeichnis abspeichern und den Pfad dazu in einer Access Datenbank abspeichern. Mit Word funktionierts, mit einem Excel Sheet allerdings nicht. Das Excel Dok ist irgendwie defekt, man kann es nach dem kopieren nicht mehr öffnen, weder direkt, noch über OLEContainer. Woran liegt das?
    Hier mein Code, wäre froh um einen Tipp!
    Vielen Dank
    Hesiod

    //Öffnet auszuwählendes Dok und speichert es ab, inkl. Pfad in Access 
    void __fastcall TFExtDoc::Button2Click(TObject *Sender) 
    { 
    OpenDialog1->Options.Clear(); 
    OpenDialog1->Options << ofFileMustExist << ofHideReadOnly << ofNoChangeDir; 
    OpenDialog1->InitialDir = "C:"; 
    
    while (true) 
      { 
      if (OpenDialog1->Execute()) 
      { 
        if (!OpenDialog1->Options.Contains(ofExtensionDifferent)) 
        { 
        TCursor Save_Cursor = Screen->Cursor; 
        Screen->Cursor = crHourGlass; 
        try { 
          OleContainer1->OldStreamFormat = false; 
          OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,0); 
    
          //Pfad zum Speichern steht in SavePfad zur Verfügung, s2 ist Dok Name 
          AnsiString SavePfad = "C:\\Programme\\CFM\\DokExtNok\"+s2; 
          //Datei abspeichern 
          OleContainer1->SaveAsDocument(SavePfad); 
    
          //Pfad der Datei in Access abspeichern 
          Table1->Edit(); 
          DBEdit3->Text = SavePfad; 
    
          Table1->Post(); 
          OleContainer1->AutoActivate = true; 
        } // end try 
        __finally 
        { Screen->Cursor = Save_Cursor; } 
        break; 
      } //end if ExtensionDifferent 
      else //reset options to remove ofExtensionDifferent 
      { 
      OpenDialog1->Options.Clear(); 
      OpenDialog1->Options << ofFileMustExist << ofHideReadOnly << ofNoChangeDir; 
      } //end else 
      } //end if Execute 
      else {//Abbruch durch Benutzer 
      Screen->Cursor = crDefault; 
      break; 
      } 
    } //end while
    


  • arg, bitte editier deinen Beitrag nochmals kurz und benütze den BBCode und einrückungen

    thx 🙂



  • Hallo!
    Wer kann mir helfen, habe keine Antwort gekriegt! 😞


Anmelden zum Antworten