Excel操作(セルの値,罫線,書式,印刷設定) ~Delphiソースコード集

検索:

Excel操作(セルの値,罫線,書式,印刷設定) ~Delphiソースコード集

1.プロジェクトを作成する

ファイル⇒新規作成⇒Windows VCLアプリケーション -Delphi
から新規アプリを作成します。フォームにボタン1つを配置します。

2.ソースコード

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls ;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses system.win.comobj, ExcelXP;

procedure TForm1.Button1Click(Sender: TObject);
var ex:olevariant;  //「エクセル」アプリケーション
    wb:olevariant;  //ワークブック
    ws:olevariant;  //ワークシート
    SaveFileName:string;
begin
  //<注意>
  //エクセルは添え字が1から始まります。
  //ブック(ex.workbooks[1])、シート(ex.workbooks[1].worksheets[1])、セル[行,列](ex.workbooks[1].worksheets[1].cells[1,1])

  //アプリケーション エクセルを作成
  ex:=CreateOleObject('excel.application');
  //新規ワークブックを作成する
  wb:=ex.workbooks.Add;
  //エクセルを表示する
  ex.visible:=True;

  //ブック内のシートを削除して1シートのみにする
  while wb.worksheets.count>1 do
    wb.worksheets[wb.worksheets.count].delete;

  //1つ目のシートを変数に代入
  ws:=wb.worksheets[1];


  //セルB2の値に2を設定する
  ws.range['B2'].value:=2;
  //セルC2の値に4を設定する
  ws.cells[2,3].value:=4;
  //セルD2に式 B2*C2 を設定する
  ws.cells[2,4].value:='=B2*C2';


  //セル範囲の左の罫線を設定
  ws.range['B2:D4'].Borders[xlEdgeLeft].Weight := xlThick;
  //セル範囲の上部の罫線を設定
  ws.range['B2:D4'].Borders[xlEdgeTop].LineStyle := xlDashDotDot;
  ws.range['B2:D4'].Borders[xlEdgeTop].Color:=$0000FF;//赤色
  ws.range['B2:D4'].Borders[xlEdgeTop].Weight:=xlThin;
  //セル範囲の右の罫線を設定
  ws.range['B2:D4'].Borders[xlEdgeRight].LineStyle:=LongInt(xlDashDot);
  ws.range['B2:D4'].Borders[xlEdgeRight].Color:=$00FF00;//緑色
  ws.range['B2:D4'].Borders[xlEdgeRight].Weight:=xlThin;
  //セル範囲の下の罫線を設定
  ws.range['B2:D4'].Borders[xlEdgeBottom].LineStyle:=xlContinuous;
  ws.range['B2:D4'].Borders[xlEdgeBottom].Color:=$FF0000;//青色
  ws.range['B2:D4'].Borders[xlEdgeBottom].Weight:=LongInt(xlMedium);
  //セル範囲の内側縦罫線を設定
  ws.range['B2:D4'].Borders[xlInsideVertical].LineStyle:=xlContinuous;
  ws.range['B2:D4'].Borders[xlInsideVertical].Color:=$000000;
  ws.range['B2:D4'].Borders[xlInsideVertical].Weight:=xlHairline;
  //セル範囲の内側横罫線を設定
  ws.range['B2:D4'].Borders[xlInsideHorizontal].LineStyle:=xlContinuous;
  ws.range['B2:D4'].Borders[xlInsideHorizontal].Color:=$777777;
  ws.range['B2:D4'].Borders[xlInsideHorizontal].Weight:=xlThin;


  //セルの書式設定を"文字"に設定する
  ws.range['B4:D4'].NumberFormatLocal:='@';
  //式を入れても、書式が文字なので計算しない
  ws.cells[4,2].value:='=B2+C2';
  //文字を横方向中央揃えに設定する
  ws.cells[4,2].HorizontalAlignment := LongInt(xlCenter);
  //文字を上下方向中央揃えに設定する
  ws.cells[4,2].VerticalAlignment := LongInt(xlCenter);

  //B~C列目の幅を24("0"の文字が24個の幅)に設定する
  ws.columns['B:C'].ColumnWidth:=24;
  //4行目の高さを27ポイントに設定する
  ws.rows['4:4'].RowHeight:=27;

  //セルC3の書式設定を日付[年/月/日 時:分:秒(曜日)]に設定する
  ws.Range['C3:C3'].NumberFormatLocal:='yyyy/mm/dd hh:mm:ss(aaa)';
  //セルC3に値を設定する
  ws.Range['C3:C3'].value:='2022/1/1 22:22:14'; 

  //セルC3:D4を結合する
  ws.range['C3:D4'].merge;
  //以下もセルC3:D4を結合するのと同じ
  //ws.range[ws.cells[3,3],ws.cells[4,4]].merge;


  //2行目~4行目をクリップボードにコピー
  ws.rows['2:4'].copy;

  //セルA6を選択
  ws.cells[6,1].select;
  //クリップボードから貼り付け
  ws.paste;

  //セルA12を選択
  ws.cells[12,1].select;
  //クリップボードから貼り付け
  ws.paste;

  //クリップボードを空にする
  ex.CutCopyMode:=False; 

  //セルA1を選択
  ws.cells[1,1].select;


  //シートの用紙サイズをA4に設定
  ws.PageSetup.PaperSize:=xlPaperA4;
  //シートの用紙方向設定(xlLandscape:横向き xlPortrait:縦向き)
  ws.PageSetup.Orientation:=xlLandscape;
  //シートの印刷倍率を80%に設定する場合
  //ws.PageSetup.Zoom:=80;
  //シートの印刷倍率を横幅に合わせる場合
  ws.PageSetup.Zoom:=False;
  ws.PageSetup.FitToPagesWide:=1;
  ws.PageSetup.FitToPagesTall:=False;

  //シートの左マージンを20mmに設定する
  ws.PageSetup.LeftMargin:= ex.InchesToPoints(20/25.4);
  //シートの右マージンを10mmに設定する
  ws.PageSetup.RightMargin:= ex.InchesToPoints(10/25.4);
  //シートの上マージンを10mmに設定する
  ws.PageSetup.TopMargin:= ex.InchesToPoints(10/25.4);
  //シートの下マージンを20mmに設定する
  ws.PageSetup.BottomMargin:= ex.InchesToPoints(20/25.4);


  //ファイル保存時に上書きしますか?の警告を出さないようにする
  ex.DisplayAlerts:=false;
  SaveFileName:=ExtractFilePath(Application.ExeName)+'a.xlsx';
  //ブックを保存
  wb.saveas(SaveFileName);
  ex.DisplayAlerts:=true;
  //エクセルを終了する
  ex.quit;
end;

end.