Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月24日] [更新 2013年12月12日] エクセル操作フォームEx
エクセル操作フォームEx
テストプログラム CellCopy
動作確認等 Windows 7 U64(SP1) + Delphi XE(UP1) Pro + Excel 2010







セルのコピーと貼付け


メソッド xlfCopyCells のテストプログラムです.表の 1 行目のデータを下方向に複写しています.
貼り付け開始セルの違いの動作確認用のテストです.数値では,貼り付け開始セルが元のセルと同じ場合,連続した値のコピーとなります.曜日などの文字列の場合には連続した値,いわゆるオートフィルの実行となります.


図1
実行結果
図2
実行結果の表の一部

リスト1
メインフォームのコード
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

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

var
  Form1: TForm1;

implementation

uses CellCopyUnit;

{$R *.dfm}

//=============================================================================
//  エクセル操作フォームEx(の継承フォーム)をモーダル表示
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
  //フォーム表示開始時に開くブック名
  //フォームのOnShowで設定してもよい
  plExcelFormEx2.xlfBookFullPath := 'CellCopyTestBook.xls';

  //表示時に選択するセル
  plExcelFormEx2.xlfActiveCell := 'A2';

  //行列番号を表示する
  plExcelFormEx2.xlfDisplayHeadings := True;

  //エクセル操作フォームEx(の継承フォーム)を表示
  plExcelFormEx2.ShowModal;
end;

end.


リスト2
表示する継承フォームのコード
unit CellCopyUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, plExcelEx, ToolWin, ComCtrls, ExtCtrls;

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

var
  plExcelFormEx2: TplExcelFormEx2;

implementation

{$R *.dfm}

//=============================================================================
//  Button1クリックで実行
//  行(縦方向)方向のコピーの例
//=============================================================================
procedure TplExcelFormEx2.Button1Click(Sender: TObject);
begin
  try
    LockWindowUpdate(PanelLeft.Handle);

    //操作対象セル範囲をクリア
    xlfClearRange('B5','G25');

    xlfCopyCells('B4', 'B4', 'B25');
    xlfCopyCells('C4', 'C5', 'C25');
    xlfCopyCells('D4', 'D4', 'D25');
    xlfCopyCells('E4', 'E5', 'E25');
    xlfCopyCells('F4', 'F4', 'F25');
    xlfCopyCells('G4', 'G5', 'G25');
    xlfActiveCell := 'A1';
  except
  end;
  LockWindowUpdate(0);

  //保存したことにする(つまり変更なし)
  xlfBookSaved := True;
end;

end.