Delphi4.ProでExcel2002を起動し印刷データをDelphiから書込みたいのです。
OSはXPです。
uses Comobj;
procedure TForm1.PrintClick(Sender: TObject);
var
E_Excel : Variant;
E_Application : Variant;
E_WorkBook : Variant;
E_WorkSheet : Variant;
begin
// Excel をオープン
try
E_Excel := CreateOleObject('Excel.Application');
E_Application := E_Excel.Application;
except
on EOleSysError do begin
//起動失敗
ShowMessage('Excelが起動できません');
E_Excel := Null;
Exit;
end;
end;
E_Application.Visible := True;
E_Application.WorkBook.Open('C:\A_C\MyData.xls'); //xlsファイルを指定
E_WorkBook := E_Application.ActiveWorkbook;
E_WorkSheet := E_Application.ActiveSheet;
// データをファイルに書き込む
E_WorkSheet.Cells(1,1).Value := '1234';
// WorkBookの内容を保存してExcelを終了する
E_WorkBook.Saved := FALSE;
E_Application.WorkBook.Close;
E_Excel.Quit;
E_Excel := unAssigned;
E_WorkBook := Unassigned; //変数のクリア
E_WorkSheet := Unassigned; //変数のクリア
end;
CreateOleObject文を実行するとEoleStsErrorクラスの例外を生成しました
'CoInitializeは呼び出されていません。'のメッセージが出てExcelが起動できません、何方か教えて下さい。
Delphi3.Proで処理するとExcelは起動しますが、データをファイルに書き込む行で
CreateOleObject文を実行するとEoleStsErrorクラスの例外を生成しました
''WorkBook'メソッドはオートメーション オブジェクトでサポートされていません'のメッセージが出ます。
Delphi4で処理したいのでですが、対処方法を教えて下さい。
すみません、Delphi3.Proで処理すると発生するエラーは以下のメッセージです。
EoleStsErrorクラスの例外を生成しましたメンバーが見つかりません
Delphi3のエラーは、.Valueを削除して正常に成りました。
Delphi3では正常に動作するのに、Delphi4ではEoleSysErrorが発生します。
質問がゴチャゴチャしていて誤字もあって分かりにくいのはマズイね。
こちらのD4では CoInitializeを呼び出さなくても EOleSysErrorは出ないけど。
もし呼び出すなら、
uses ComObj, ActiveX;
.....
begin
CoInitialize(nil);
.....
CoUninitialize;
end;
"WorkBook'メソッドは…"のエラーについては単なるソースの記述ミス。
ソースをよ〜く見直すべし。
環境依存?さん、エラーは出なくなりました。有難う御座いました。
ところで、下側のCoUninitialize;を記述して実行すると、EAccessViolationクラスの例外エラーが発生するので、記述しませんでした。
ツイート | ![]() |