ExcelのデータをDelphiで読み込むには

解決


  2003-08-21 20:56:54  No: 4441

はじめまして、イキナリぶしつけな質問で申し訳ありません。

いまDelphi5でExcelのシートからデータを読み込み、条件フラグにより内容を変えながら計算して、元データと結果をDelphiに表示させようとしています。

何とかExcelの起動は何とかなったのですが、セルの読み込みがバリアントエラーではじかれてしまいます。

どなたか読み込み方法を教えていただけないでしょうか?

プログラムは下記の要領です。

var
  ExcelApp :Olevariant;
  ExcelBook:Olevariant;
  ExcelSheet:Olevariant;

  iRow:Integer; 
  iCol:Integer;

begin
  ExcelApp := CreateOleObject('Excel.Application');
  ExcelBook := ExcelApp.WorkBooks.Open(c:\****\test.xls,False);.
  ExcelSheet := ExcelBook.WorkSheets['テスト用'].Activate;

  for iRow := 1 to 50 do begin    cTemp := '';
    for iCol := 1 to Cols do begin
      //セルのデータを得る
      cTemp := ExcelSheet.Cells[iRow,iCol].value;  <-ここで、エラー
          処理続く
    end; 

      各行のデータを元に計算
  end;

end;


ウォレス  2003-08-22 02:29:04  No: 4442

はじめまして。
Office操作は興味がありますので、機会あるごとに実験しています。
一応、下記でいけました。ビギナーにつき、正確な事はわかりませんが、
.Activate  とういのがダメな原因のようです。
・usesにComObjを追加、Memo1を追加しています。

var
  ExcelApp: Olevariant;
  ExcelBook: Olevariant;
  ExcelSheet: Olevariant;

  iRow: Integer;
  iCol: Integer;

  Ctmp: Variant;

begin
  ExcelApp := CreateOleObject('Excel.Application');
  ExcelBook := ExcelApp.WorkBooks.Open('c:\tmp\test.xls', False);
  ExcelSheet := ExcelBook.WorkSheets['テスト用']; //.Activate;  <=ココです。

  Memo1.Clear;

  for iRow := 1 to 5 do
  begin
    Ctmp := '';
    for iCol := 1 to 5 do
    begin
      Ctmp := ExcelSheet.Cells[iRow, iCol].value;
      Memo1.Lines.Add(InttoStr(Ctmp));
    end;
  end;

end;


  2003-08-22 02:51:18  No: 4443

有難うございました。
読み込めました!!

まさか、Activateが原因とは思いもしませんでした。

本当に有難うございました。


KEN  2003-08-27 01:36:34  No: 4444

私もいろいろとExcel関連については調べているのですが、
下記のページの[ダウンロード]からExcel操作に関するファイルがダウンロードできます。
ちなみにクラスになっていて参考になります。
http://www.geocities.jp/lupin_home/


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

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






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