Excelのセル色、フォント色を変えるには?


EVE  2004-10-06 06:08:33  No: 11288

お世話になります。
現在、DelphiからExcel出力を行おうとしております。
ただ、セルの色、フォントの色を変えるといった単純なものなはずなのに、壁にぶちあったまま、数時間経過しております。こんな質問で恐縮ですが皆さんの知恵をかしてください。

以下ソースです。
中間のデータをセットしている部分で、各セル毎(もしくわブロックにして)色を変更したいと思っております。
どうぞ宜しくお願いします。

     // Excel をオープン
     E_Excel :=  CreateOleObject('Excel.Application');
     E_Application :=  E_Excel.Application;
     E_Application.Visible :=  FALSE;
     E_Application.WorkBooks.Open(FileName); // XLS ファイルを指定
     E_WorkBook :=  E_Application.ActiveWorkbook;
     E_WorkSheet:=  E_Application.ActiveSheet;

    //DataSet  からデータ取得
    ADODataSet1.First;
    for x := 0 to ADODataSet1.RecordCount-1 do begin
      for i := 0 to ADODataSet1.Fields.Count-1 do begin
        if x = 0 then begin
          E_WorkSheet.Cells[x+1,i+1].Value := ADODataSet1.Fields.Fields[i].FieldName;
        end;
        E_WorkSheet.Cells[x+2,i+1].Value := ADODataSet1.Fields.Fields[i].AsString;
      end;
      ADODataSet1.Next;
    end;

     //Excel保存 & ObjectFree
     E_Application.DisplayAlerts := False;
     E_WorkSheet := unassigned;
     E_WorkBook.SaveAs(FileName);
     E_WorkBook := unassigned;
     E_Application.ActiveWorkBook.Close(FileName);
     E_Application.Quit;
     E_Application := unassigned;
     E_Excel := unassigned;


EVE  2004-10-06 06:11:42  No: 11289

つけたしです。
Excel2000、Delphi6です。


HOta  2004-10-06 06:42:08  No: 11290

EVEさん

E_WorkShee.Cells[2,2].Interior.ColorIndex := 35;
//セルの色薄緑
E_WorkShee.Range[E_WorkShee.Cells[1,1]
                ,E_WorkShee.Cells[5,5]].Interior.ColorIndex := 5;
//レンジの色

でどうでしょうか?色は適当です。探してください。


EVE  2004-10-12 21:10:23  No: 11291

HOtaさん、ありがとうございました。返答が遅れまして申し訳ありません。

早速ですが、上記の通りの内容を追加してみたのですが、色が変更されません。
試しに入れてみたのが、下記なのですが、何か間違えがありますでしょうか?

     // Excel をオープン
     E_Excel :=  CreateOleObject('Excel.Application');
     E_Application :=  E_Excel.Application;
     E_Application.Visible :=  FALSE;
     E_Application.WorkBooks.Open(FileName); // XLS ファイルを指定
     E_WorkBook :=  E_Application.ActiveWorkbook;
     E_WorkSheet:=  E_Application.ActiveSheet;

    ADODataSet1.First;
    for x := 0 to ADODataSet1.RecordCount-1 do begin
      for i := 0 to ADODataSet1.Fields.Count-1 do begin
        if x = 0 then begin
          E_WorkSheet.Cells[x+1,i+1].Value := ADODataSet1.Fields.Fields[i].FieldName;
        end;
        E_WorkSheet.Cells[x+2,i+1].Value := ADODataSet1.Fields.Fields[i].AsString;
      end;
      ADODataSet1.Next;
    end;

    E_WorkSheet.Cells[1,1].Interior.ColorIndex := 35;
    E_WorkSheet.Range[E_WorkSheet.Cells[1,1]
                ,E_WorkSheet.Cells[5,5]].Interior.ColorIndex := 5;

     //Excel保存 & ObjectFree
     E_Application.DisplayAlerts := False;
     E_WorkSheet := unassigned;
     E_WorkBook.SaveAs(FileName);
     E_WorkBook := unassigned;
     E_Application.ActiveWorkBook.Close(FileName);
     E_Application.Quit;
     E_Application := unassigned;
     E_Excel := unassigned;


HOta  2004-10-12 22:16:41  No: 11292

おかしいですね。
コードを貼りつけて、ADO部分を消して実行すると、
ちゃんと色が付きましたよ。


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

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






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