Delphi4でExcelの操作をするには

解決


金魚  2005-07-14 19:40:55  No: 16373

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で処理したいのでですが、対処方法を教えて下さい。


金魚  2005-07-14 19:45:37  No: 16374

すみません、Delphi3.Proで処理すると発生するエラーは以下のメッセージです。
EoleStsErrorクラスの例外を生成しましたメンバーが見つかりません


金魚  2005-07-14 20:12:38  No: 16375

Delphi3のエラーは、.Valueを削除して正常に成りました。
Delphi3では正常に動作するのに、Delphi4ではEoleSysErrorが発生します。


環境依存?  2005-07-14 23:31:35  No: 16376

質問がゴチャゴチャしていて誤字もあって分かりにくいのはマズイね。
こちらのD4では CoInitializeを呼び出さなくても EOleSysErrorは出ないけど。
もし呼び出すなら、
uses ComObj, ActiveX;
 .....
begin
 CoInitialize(nil);
 .....
 CoUninitialize;
end;

"WorkBook'メソッドは…"のエラーについては単なるソースの記述ミス。
ソースをよ〜く見直すべし。


金魚  2005-07-15 19:04:08  No: 16377

環境依存?さん、エラーは出なくなりました。有難う御座いました。
ところで、下側のCoUninitialize;を記述して実行すると、EAccessViolationクラスの例外エラーが発生するので、記述しませんでした。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加