いつもお世話になっております。
ソロです。
以下のソースなのですが、
DelphiからExcelを呼んで書き込みをしています。
ところが、エクセルが終了されず、延々と残っているのです。
コメントに書いてあるソースで DisConnect や Unassigned をしようとしても
”オブジェクトでサポートされていないメソッドです”みたいなエラーが。。
usesにちゃんと”ComObj”も書いてます。
どこがおかしいのでしょうか。
//ブック名
BookName := 'test.xls';
//シート名
BookName := 'sheet1';
//Excelオブジェクト作成
ExcelApplication1 := CreateOleObject('Excel.Application');
//Excelブックを開く
ExcelApplication1.Visible := False;
ExcelApplication1.WorkBooks.Open(''+BookName+'');
ExcelWorkBook1 := ExcelApplication1.activeworkbook;
//シートを指定
ExcelSheet1 := ExcelApplication1.Worksheets.item[''+SheetName+''];
ExcelSheet1.activate;
{処理をいろいろと}
ExcelApplication1.DisplayAlerts := False;
//保存
ExcelWorkBook1.SaveAs(''+BookName+'');
//セーブしないで終了
ExcelApplication1.ActiveWorkbook.Close(''+BookName+'');
ExcelApplication1.Quit;
//ExcelApplication1.Disconnect;
//ExcelApplication1:=Unassigned;
以下エクセルの終了
E_ExcelApplication1 .DisplayAlerts := False;//メッセージダイアログの表示[OFF]
E_ExcelApplication1 .Quit;
E_ExcelApplication1 := unAssigned;
のようにやってみてはどうでしょうか?
書き忘れましたが、実行環境はWindows2000のExcel2000です。
上記の実行環境では実際に終了できました。
おっと、こんなに早く返信いただけるとは!
E_ExcelApplication1 := unAssigned;
はコメントにしてますが、やってみました。
しかし、”未定義の識別子〜〜”と怒られてしまうのです (^^;)
なにが"未定義の識別子"となっているのでしょうか?
編集 削除”unAssigned”です。
遅れましたが、私の実行環境はWin2000 + Excel97です。
ただ、お客さんの環境はWin98 + Excel97です。(T_T)
VariantsはUses節に追加していますでしょうか?
UnassignedはVariantsで定義されているはずなので。
できましたー!
ありがとうございました。
またユニットの追加を忘れてました。
前にもhatenaさんに指摘されたのに。。
分からない用語等でてきたらその都度
ヘルプをくまなくチェックするようにします。
<(_ _)>