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;