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;
|