tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VBからExcel にデータを送りグラフを表示する(VB6.0 応用編) ( No.17 )  [親スレッドへ]
日時: 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

---------------------------------------------------------------------



 [スレッド一覧へ] [親スレッドへ]