Delphi Programming / Object Pascal

[掲載 2009年05月28日] [更新 2013年12月18日] エクセル操作フォームEx |
エクセル操作フォームEx 参考コード類
グラフシートをアクティブにして操作 |
| 動作確認等 |
Windows 7 U64(SP1) + Delphi XE Pro + Excel 2010 |
エクセルのチャート、つまりグラフを操作する例です。
本ページのコードは、ブックにグラフシートを新規作成し、そこにチャートを作成しておきます。そのグラフを操作しています。グラフシートを新規に追加すると Graph1 という名前になります。グラフのデータは Sheet1 にあります。 |
 |
図1
グラフの元となるデータ
|
 |
図2
操作前のグラフ
|
エクセル操作フォームEx で扱うのは基本的にワークシートだけです。グラフシートが存在するブックも表示できますが、シートの移動メソッドでも、[Ctrl] + [PageUp]、[Ctrl] + [PageDown] でもグラフシートを表示することはできません。
コードでグラフシートのオブジェクトを取得して、アクティブにするには、例えば以下のコードを実行します。 |
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;
| グラフシートをアクティブにするだけで、操作する必要がなければ、グラフシートのオブジェクトを取得する必要はありません。以下のコードでアクティブにできます。 |
procedure TplExcelFormEx1.Button2Click(Sender: TObject);
const
LCID = LOCALE_SYSTEM_DEFAULT;
begin
try
(xlfExcelApp.Sheets['Graph1'] as ExcelChart).Activate(LCID);
except
raise;
end;
end;
 |
図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] のデータを変更するとグラフも更新される
|
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;
|