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;