Einzelnen Beitrag anzeigen

devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Excel per OLE speichern, wenn im Editiermodus

  Alt 4. Aug 2022, 15: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
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat