寄木@神戸です。
環境は、Delphi 10.3 Rio です。
参考になるかどうかわかりませんが、私が普段使っているコードを示します。
このコードは、以下のMr. XRAYさんのサイトから拝借して、1番安定して使えて
います。
http://mrxray.on.coocan.jp/Delphi/plSamples/400_Excel_CreateObject.htm
=================宣言===============
var
Excel : OleVariant;
ExcelApp : OleVariant;
WorkBook : OleVariant;
WorkSheet: OleVariant;
SheetName: OleVariant;
procedure ExcelOpen(fn: TFileName);
procedure ExcelClose;
==============実際のコード実現部======================
procedure TfMain.ExcelOpen(fn: TFileName);
var
hFile : THandle;
tmp : String;
begin
try
if VarIsEmpty(Excel) then
begin
hFile := FileOpen(fn, fmOpenReadWrite);
if hFile = HFILE_ERROR then
begin
FileClose(hFile);
Excel := GetActiveOleObject('Excel.Application');
ExcelApp := Excel.Application;
end
else
begin
FileClose(hFile);
Excel := CreateOleObject('Excel.Application');
ExcelApp := Excel.Application;
ExcelApp.WorkBooks.Open(fn);
end;
Excel.Visible := false; // 非表示で起動
WorkBook := ExcelApp.ActiveWorkBook;
WorkSheet := WorkBook.WorkSheets[1]; //対象シート
WorkSheet.Activate;
end;
finally
;
end;
end;
procedure TfMain.ExcelClose;
begin
if not VarIsEmpty(Excel) then
begin
WorkBook.Close;
WorkBook := unAssigned;
WorkSheet := unAssigned;
ExcelApp.Quit;
ExcelApp := unAssigned;
Excel.Quit;
Excel := unAssigned;
end;
end;
==========================================
よくわからずにコピペで使っているので、間違っているところがあるかもしれま
せんが、今のところ、特に支障なく動作しています。
-----------------------------------------------------------
Yasuhiko Yoriki 寄木康彦
mailto:
yor...@yoriki.jp
http://www.yoriki.jp/