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.