- 日時: 2007/08/21 08:09
- 名前: 花ちゃん
- ***********************************************************************************
* カテゴリー:[エクセル][][] * * キーワード:グラフ,,,,, * ***********************************************************************************
ここのサイトの[カテゴリ別サンプル一覧]の中のExcel&Word関係の中でも紹介しているのですが こちらへも転載しておきます。
----------------------------------------------------------------------------------- VBからExcel にデータを送りグラフを表示する - 花ちゃん 2006/08/21 -----------------------------------------------------------------------------------
Option Explicit Private Sub Command1_Click() '★プロジェクト→参照設定でMicrosoft Excel *.* ObjectLibraryに ' チェックを入れておいて下さい。 '================================================================== 'Excel の起動処理 '基本的な設定は[VBからエクセルを操作する]を参照して下さい。 Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets(1) '================================================================== 'Excel を操作部分 'Excel のセルに値を代入します。 Dim xlCells As Excel.Range Dim i As Integer Dim j As Integer Set xlCells = xlSheet.Cells For i = 2 To 6 For j = 2 To 6 '30〜100 の範囲のランダムなデータを作成 xlCells(j, i).Value = CInt(70 * Rnd + 31) Next j Next i '系列名の設定 xlCells(2, 1).Value = "国語" xlCells(3, 1).Value = "数学" xlCells(4, 1).Value = "英語" xlCells(5, 1).Value = "社会" xlCells(6, 1).Value = "体育" '項目名の設定 xlCells(1, 2).Value = "石原" xlCells(1, 3).Value = "小泉" xlCells(1, 4).Value = "田中" xlCells(1, 5).Value = "平沼" xlCells(1, 6).Value = "森山" '=================================================================== 'グラフデータの範囲を選択 SetSourceDataでも可 'xlSheet.Range("A1:F6").Select
Dim MyChart As ChartObject '表示位置・グラフの大きさを指定して '新しい埋め込みグラフを作成します。 Set MyChart = xlSheet.ChartObjects.Add(10, 100, 600, 330) With MyChart.Chart 'PlotBy プロパティでも系列を指定できます。 '系列を列に変更 行は xlRows .SetSourceData xlSheet.Range("A1:F6"), xlColumns '又は '.SetSourceData xlSheet.Range(xlSheet.Cells(1, 1), _ xlSheet.Cells(6, 6)), xlColumns
'円グラフのように複数の範囲を選択する場合 '.SetSourceData xlSheet.Range("A1:A6,D1:D6"), xlColumns
'又は下記のような関数を作成しておき 'Dim myRange As String 'myRange = fChangeA1(1, 1) & ":" & fChangeA1(6, 1) & "," & _ fChangeA1(1, 4) & ":" & fChangeA1(6, 27) '.SetSourceData xlSheet.Range(myRange), xlColumns
'縦棒グラフを指定 .ChartType = xlColumnClustered
'数値軸の最大目盛りを 100 に設定 .Axes(xlValue).MaximumScale = 110 '数値軸の最小目盛りを 0 に設定 .Axes(xlValue).MinimumScale = 0 '数値軸の目盛り間隔を 20 に設定 .Axes(xlValue).MajorUnit = 20
'グラフのタイトルを表示 .HasTitle = True .ChartTitle.Text = "中間テスト結果"
'データラベルの表示(全ての系列に対して) .ApplyDataLabels (xlDataLabelsShowValue) '系列1にだけ表示する場合 '.SeriesCollection(1).ApplyDataLabels (xlDataLabelsShowValue)
'作業中のシートにグラフを表示 .Location xlLocationAsObject, xlSheet.Name End With
'エクセルを表示します。(後で表示する方が早い) xlApp.Visible = True
'★おまけ上記がうまく表示されたらコメントを外して試して下さい。 'MyChart.Chart.ChartType = xl3DColumn 'For i = 0 To 100 Step 10 ' MyChart.Chart.Rotation = i ' xlApp.Wait (Now + TimeValue("0:00:01")) 'Next i '================================================================== '下記コードはこのサンプルとは直接、関係ありません。 '動作確認の為に Excel を5秒間表示して置く為のものです。 Dim lngSt As Long lngSt = Timer Do While Timer - lngSt < 5 DoEvents Loop '================================================================== '終了処理 xlApp.DisplayAlerts = False Set xlCells = Nothing Set MyChart = Nothing Set xlSheet = Nothing xlBook.Close 'Book を閉じる Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing End Sub
-------------------------------------------------------------------------------- A1形式に変換する自作関数 Private Function fChangeA1(ByVal Row As Long, ByVal Col As Long) As String 'セルアドレスを A1 形式に変換する自作関数 If Col >= 27 Then fChangeA1 = Chr$(64 + ((Col - 1) \ 26)) & _ Chr$((Col Mod 26) + 64) & Trim$(Str$(Row)) Else fChangeA1 = Chr$(Col + 64) & Trim$(Str$(Row)) End If End Function
細かい設定等はマクロに記録して調べて下さい。
又、グラフの種類等はヘルプファイル(C:\Program Files\Microsoft Office\Office\1041\VBAXL9.CHM) (環境により違います。Excel2000)で ”ChartTypeプロパティ” で検索し、調べて下さい。
========================================================================================
---------------------------------------------------------------------
グラフ操作関連のテクニック
Excel VBA モーグ即効テクニック集 より
グラフ操作関連のテクニック http://www.moug.net/tech/exvba/0021.htm
---------------------------------------------------------------------
Excel のグラフ関係の主なプロパティ一覧
ミコの黄色いおうち さんのサイトより
ChartType プロパティの一覧 http://park11.wakwak.com/~miko/Excel_Note/25-01_graph.htm#25-01-11
その他のグラフのプロパティ http://park11.wakwak.com/~miko/Excel_Note/25-01_graph.htm#25-01-12
---------------------------------------------------------------------
|