Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月28日] [更新 2013年12月18日] エクセル操作フォームEx
エクセル操作フォームEx   参考コード類
グラフシートをアクティブにして操作
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010







チャートの操作


エクセルのチャート,つまりグラフを操作する例です.
本ページのコードは,ブックにグラフシートを新規作成し,そこにチャートを作成しておきます.そのグラフを操作しています.グラフシートを新規に追加すると Graph1 という名前になります.グラフのデータは Sheet1 にあります.


図1
グラフの元となるデータ
  • [Sheet1] にある
図2
操作前のグラフ
  • [Graph1] にある




グラフシートをアクティブに


エクセル操作フォームEx で扱うのは基本的にワークシートだけです.グラフシートが存在するブックも表示できますが,シートの移動メソッドでも,[Ctrl] + [PageUp],[Ctrl] + [PageDown] でもグラフシートを表示することはできません.
コードでグラフシートのオブジェクトを取得して,アクティブにするには,例えば以下のコードを実行します.


リスト1
procedure TplExcelFormEx1.Button1Click(Sender: TObject);
const
  LCID = LOCALE_SYSTEM_DEFAULT;
var
  AChart : ExcelChart;
begin
  try
    AChart := (xlfExcelApp.Sheets['Graph1'] as ExcelChart);
    AChart.Activate(LCID);
  except
    raise;
  end;
end;


グラフシートをアクティブにするだけで,操作する必要がなければ,グラフシートのオブジェクトを取得する必要はありません.以下のコードでアクティブにできます.


リスト2
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
const
  LCID = LOCALE_SYSTEM_DEFAULT;
begin
  try
    (xlfExcelApp.Sheets['Graph1'] as ExcelChart).Activate(LCID);
  except
    raise;
  end;
end;




チャートの操作例


作成済みのチャートグラフの操作する例です.


図3
操作結果
  • 位置とサイズと色が変わる

リスト3
procedure TplExcelFormEx1.Button3Click(Sender: TObject);
const
  LCID = LOCALE_SYSTEM_DEFAULT;
var
  AChart    : ExcelChart;
  ChartObj  : ChartObject;
  objSeries : OleVariant;
begin
  try
    //まずグラフシートをアクティブに
    AChart := (xlfExcelApp.Sheets['Graph1'] as ExcelChart);
    AChart.Activate(0);

    //アクティブにしたグラフシートの1番目のチャートをアクティブに
    ChartObj := (AChart.ChartObjects(1, LCID) as ChartObject);
    ChartObj.Activate;

    //ひな形用として作成したチャートを表示
    Sleep(2000);

    //位置とサイズを変更(数値はポイント単位)
    ChartObj.Left   := 20;
    ChartObj.Top    := 10;
    ChartObj.Width  := 380;
    ChartObj.Height := 250;

    Sleep(2000);
    with xlfExcelApp.ActiveChart do begin
      PlotArea[LCID].Top := 20;

      //プロット領域の背景をxlNone
      PlotArea[LCID].Interior.ColorIndex := xlNone;

      //全体のフォントサイズは12pt
      ChartArea[LCID].Font.Size := 12;

      //グラフのタイトルは20pt
      ChartTitle[LCID].Font.Size := 20;
      ChartTitle[LCID].Top       := 0;

      //棒グラフの色を変更
      objSeries := SeriesCollection(1, LCID);
      objSeries.Interior.ColorIndex := 35;

      objSeries := SeriesCollection(2, LCID);
      objSeries.Interior.ColorIndex := 15;
    end;
  except
    raise;
  end;
end;




セルのデータを変更してチャートを更新


シート上のの元データを変更すれば,グラフも更新されます.その確認用のコードです.


図4
データ更新の確認
  • [Sheet1] のデータを変更するとグラフも更新される

リスト4
procedure TplExcelFormEx1.Button4Click(Sender: TObject);
var
  AChart : ExcelChart;
begin
  //xlfExcelSheet.Range['B3','B3'].Value :=150;と同じ
  xlfCellValue['B3'] := 150;

  try
    AChart := (xlfExcelApp.Sheets['Graph1'] as ExcelChart);
    AChart.Activate(0);
  except
    raise;
  end;
end;