Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月28日] [更新 2013年12月12日] エクセル操作フォームEx
   
エクセル操作フォームEx   参考コード類
列と行に対する操作
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010







列に対する操作は EntireColumn - 列のコピーと列幅設定例


Range オブジェクトの EntireColumn プロパティが列全体の Range オブジェクトとなります.
この Range オブジェクトに対して,セルの書式に関するプロパティやメソッドが使用できます.
行と列の挿入や削除は,エクセル操作フォームEx 本体にメソッドが用意してあります.必要に応じてソースコードを参考にしてください.


図1
実行前
図2
コピー実行
  • B列の内容が D 列にコピーされる
図3
列幅変更
  • B 列から D 列の幅が同じとなる

リスト1
列のコピーと列幅
//=============================================================================
//  列の複写(コピー貼付け)
//  EntireColumnプロパティを使用すると列のRangeオブジェクトが取得できる
//  このRaneオブジェクトに対してメソッドやプロパティを使用する
//=============================================================================
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  //コピー元のセルを含む列のRangeオブジェクト
  //B1を指定しているのでB1を含む列となる
  ARange := xlfExcelSheet.Range['B1','B1'].EntireColumn;
  //コピー元がわかるように選択
  ARange.Select;

  //D列に貼付け
  ARange.Copy(xlfExcelSheet.Range['D1','D1'].EntireColumn);
end;

//=============================================================================
//  列幅
//
//  列幅の単位は標準スタイルの1文字分の幅
//  プロポーショナルフォントでは数字の0の幅が列幅の単位
//=============================================================================
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  //列幅の変更
  //ここではB列からD列まで
  ARange := xlfExcelSheet.Range['B1','D1'];
  ARange.ColumnWidth := 3.5;
end;

//=============================================================================
//  列の幅
//  選択中の列の幅を同じにする
//=============================================================================
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  ARange := (xlfExcelApp.ActiveWindow.Selection as Txlf2000Range);
  ARange.ColumnWidth := 15.2;
end;




行に対する操作は EntireRow - 行のコピーと行高さ設定例


Range オブジェクトの EntireRow プロパティが行全体の Range オブジェクトとなります.
この Range オブジェクトに対して,セルの書式に関するプロパティやメソッドが使用できます.


図4
実行前
図5
行のコピー
  • 2 ~ 4 行を 7 行目にコピー
図6
行高さ設定
  • 2 ~ 4 行の高さが全て同じになる

リスト2
行のコピーと行高さ
//=============================================================================
//  行の複写(コピー貼付け)
//  EntireRowプロパティを使用すると行のRangeオブジェクトが取得できる
//  このRaneオブジェクトに対してメソッドやプロパティを使用する
//=============================================================================
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  //元の対象セルを含む行のRangeオブジェクト
  ARange := xlfExcelSheet.Range['B2','B4'].EntireRow;
  //コピーがわかるように選択
  ARange.Select;

  //貼付け.1行指定だが元の行数分の貼付けとなる
  ARange.Copy(xlfExcelSheet.Range['B7','B7'].EntireRow);
end;

//=============================================================================
//  行の高さ
//  高さの単位はポイント
//=============================================================================
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  //行高さの変更
  //2~4行までの高さを変更
  ARange := xlfExcelSheet.Range['A2','A4'];
  ARange.RowHeight := 25.2;
end;

//=============================================================================
//  行の高さ
//  選択中の行の高さを同じにする
//=============================================================================
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
var
  ARange : Txlf2000Range;
begin
  ARange := (xlfExcelApp.ActiveWindow.Selection as Txlf2000Range);
  ARange.RowHeight := 25.2;
end;




行の高さまたは列の幅設定用ダイアログの表示


選択中の行の高さを設定をダイアログを表示して設定するには,次のコードのように,コマンド ID の 541 を使用するできます.


図7
行の高さを設定するダイアログ

リスト3
procedure TplExcelFormEx1.Button4Click(Sender: TObject);
var
  objCmdBars : OleVariant;
begin
  xlfSetFocusExcel;
  objCmdBars := xlfExcelApp.CommandBars;
  try
    objCmdBars.FindControl(ID := 541).Execute;
  except
  end;
end;


選択中の列の幅を設定するダイアログは,コマンド ID の 542 を使用すると表示できます.


リスト4
procedure TplExcelFormEx1.Button5Click(Sender: TObject);
var
  objCmdBars : OleVariant;
begin
  xlfSetFocusExcel;
  objCmdBars := xlfExcelApp.CommandBars;
  try
    objCmdBars.FindControl(ID := 542).Execute;
  except
  end;
end;