1. 出来上がりのイメージ
Excel VBAでチャートの作成を自動化したいので、チャートを作成するプログラムの練習をします。最終的な自動化のプログラムではなく、いろんな機能を試した時のソースコードを説明します。
まず、出来上がりの画面です。
2. ソースコードの説明
あまり細かい説明はしないのですが、このようなコードでチャートを作成しました。だいたい、これくらいの機能が使えれば、狙ったチャートを作れると思います。最終的には、Accessデータベースに保存したデータを読み込んで、チャート化してpptに貼るという一連のプログラムを作りたいと思います。
Private Sub Chart_Create_Button_Click()
Dim size As Integer
Dim ShapeObj As Shape
Dim SeriesObj As Series
Dim ScObj As SeriesCollection
Dim ChartObj As Chart
Dim XaxisObj As Axis
Dim YaxisObj As Axis
Dim x_index As Integer
Dim y_index As Integer
x_index = 0
y_index = 0
size = 300
Set ShapeObj = ActiveSheet.Shapes.AddChart(xlXYScatter, x_index * size * 1.2, y_index * size, size * 1.2, size)
Set ChartObj = ShapeObj.Chart
Set ScObj = ChartObj.SeriesCollection
Set SeriesObj = ScObj.NewSeries
'データを設定する
SeriesObj.XValues = DataGen(20)
SeriesObj.Values = DataGen(20)
SeriesObj.Name = "test_name1"
Set SeriesObj = ScObj.NewSeries
'データを設定する
SeriesObj.XValues = DataGen(20)
SeriesObj.Values = DataGen(20)
SeriesObj.Name = "test_name2"
Set Xaxis = ChartObj.Axes(xlCategory)
Set Yaxis = ChartObj.Axes(xlValue)
'横軸ラベルを設定する
With Xaxis
.HasTitle = True
.AxisTitle.Text = "test_Axis_x"
End With
'縦軸ラベルを設定する
With Yaxis
.HasTitle = True
.AxisTitle.Text = "test_Axis_y"
End With
Xaxis.MaximumScale = 2
Xaxis.MinimumScale = -1
Yaxis.MaximumScale = 2
Yaxis.MinimumScale = -1
ChartObj.SetElement (msoElementPrimaryCategoryGridLinesMajor)
Xaxis.TickLabelPosition = xlLow
Yaxis.TickLabelPosition = xlLow
With ChartObj
.HasTitle = True
.ChartTitle.Text = "ChartTitle"
End With
End Sub
Public Function DataGen(data_width As Integer) As Double()
Dim i As Integer
Dim DataArray() As Double
ReDim DataArray(data_width)
For i = 0 To data_width - 1
DataArray(i) = Rnd()
Next
DataGen = DataArray
End Function

0 件のコメント:
コメントを投稿