Einzelnen Beitrag anzeigen

DevidEspenschied

Registriert seit: 7. Sep 2006
Ort: Berlin
441 Beiträge
 
Delphi 12 Athens
 
#1

Excel per OLE speichern, wenn im Editiermodus

  Alt 4. Aug 2022, 16:03
Hallo zusammen,

ich versuche Excel per OLE zu öffnen und eine bestehende Tabelle zu laden, sowie beim Programmende wieder zu speichern und schließen. Das klappt mit nachfolgendem Code auch sehr gut. Allerdings gibt es Probleme, wenn sich Excel im Editiermodus befindet, ich also gerade Daten in ein Feld eingebe (erreichbar z.B. mit F2). Dann liefern die Aufrufe zum Speichern eine EOleSysError-Exception mit dem Text "Aufruf wurde durch Aufgerufenen abgelehnt".

Daher muss ich irgendwie vor dem Speichern prüfen, ob der Editiermodus aktiv ist bzw. diesen deaktivieren, bevor ich mit dem Speichern fortfahren kann. Hat jemand eine Idee, wie ich das bewerkstelligen kann? Danke für Eure Antworten...

Delphi-Quellcode:
var
  fFileName : String;
  Excel, ExcelWorkbook : OleVariant;
begin
  Excel := CreateOleObject('Excel.Application');
  Excel.Visible := True;
  ExcelWorkBook := Excel.WorkBooks.Open(fFileName);

  ...

  if not VarIsEmpty(Excel) then
  begin
    try
      ExcelWorkbook.Saved := False; //hier beginnt die Exception, wenn sich Excel im Editiermodus befindet
      ExcelWorkbook.Close (SaveChanges := True);
      Excel.Quit;
      Excel := unassigned;
    except
      on E:Exception do
        ShowMessage('Es ist eine Exception aufgetreten: ' + E.ClassName + #13#13 + E.Message);
      end;
    end;
Devid
Devid Espenschied
Pre-sales Consultant
Embarcadero Germany GmbH
germany.info@embarcadero.com

Kein Support per PN
  Mit Zitat antworten Zitat