Excelでグラフを作成しピクチャーボックスに表示
                                                         玄関へお回り下さい。
Excelでグラフを作成しピクチャーボックスに(メタファイルで)表示    (286)
Form にPicture1を貼り付け、メニューエディターで mnuShow と mnuExit を作って下さい
    Option Explicit   'SampleNo=286 WindowsXP VB6.0(SP5) 2003.04.22

Private Sub
mnuShow_Click()
'Excelでグラフを作成しピクチャーボックに表示
  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.Add
  Dim i As Integer
  Dim j As Integer
  For i = 2 To 6
    For j = 2 To 6
      xlSheet.Cells(j, i) = CInt(70 * Rnd + 31)
    Next j
  Next i
  xlSheet.Cells(2, 1) = "国語"
  xlSheet.Cells(3, 1) = "数学"
  xlSheet.Cells(4, 1) = "英語"
  xlSheet.Cells(5, 1) = "社会"
  xlSheet.Cells(6, 1) = "体育"
  xlSheet.Cells(1, 2) = "石原"
  xlSheet.Cells(1, 3) = "小泉"
  xlSheet.Cells(1, 4) = "田中"
  xlSheet.Cells(1, 5) = "平沼"
  xlSheet.Cells(1, 6) = "森山"

  'グラフデータの範囲を選択 SetSourceDataでも可
  'xlSheet.Range("A1:F6").Select
  Dim MyChart As ChartObject
  '表示位置・グラフの大きさを指定して
             '新しい埋め込みグラフを作成します。
  Set MyChart = xlSheet.ChartObjects.Add(50, 50, 450, 300)
  With MyChart.Chart
    'PlotBy プロパティでも系列を指定できます。
    '系列を列に変更   行は xlRows
    .SetSourceData xlSheet.Range("A1:F6"), xlColumns
    '縦棒グラフを指定
    .ChartType = xlColumnClustered
    '数値軸の最大目盛りを100に設定
    .Axes(xlValue).MaximumScale = 100
    '数値軸の目盛り間隔を20に設定
    .Axes(xlValue).MajorUnit = 20
    'グラフのタイトルを表示
    .HasTitle = True
    .ChartTitle.Text = "中間テスト結果"
    '作業中のシートにグラフを表示
    .Location xlLocationAsObject, xlSheet.Name
  End With
'---------------------------------------------------------------
'ここまで、 VBからExcel にデータを送りグラフを表示する (016) を使用
'---------------------------------------------------------------

  'クリップボードを初期化
  Clipboard.Clear
  'クリップボードにコピー
  xlSheet.ChartObjects("グラフ 1").Copy

'------- Excelの終了処理 -----------------
  xlApp.DisplayAlerts = False
  'オブジェクトを解放します
  Set xlSheet = Nothing
  xlBook.Close      'Book を閉じる
  Set xlBook = Nothing
  xlApp.Quit       'Quit メソッドを使って Excel を終了します。
  Set xlApp = Nothing
'-------------------------------------------
'---------- クリップボード経由でPictureに貼り付け ------------------
  'クリップボードにメタファイルが入っているかチェック
  If Clipboard.GetFormat(vbCFMetafile) Then
    'メタファイルならピクチャーコントロールに貼り付け
    Set Picture1.Picture = Clipboard.GetData(vbCFMetafile)
  End If
End Sub

Private Sub Form_Resize()
  'フォームのサイズに合せてPictureBoxのサイズ(グラフ)を変更
  Picture1.Move 100, 100, Me.Width - 350, Me.Height - 1000
End Sub

Private Sub mnuExit_Click()
  Unload Me
End Sub


  
  
グラフの表示部分は、VBからExcel にデータを送りグラフを表示する (016) を使用しており
ます。 裏でExcelでグラフを作成し、それをクリップボード経由でピクチャーに貼り付けております
が、その時にメタファイル形式で貼り付けていますので、フォームのサイズを変更するとピクチャー
ーのサイズも変わり、グラフのサイズも変わります。拡大・縮小に伴うタイトル文字等はメタファイル
の為に綺麗に拡大・縮小表示されます。
Excelを非表示で行っているので、見た目はVBで直接ピクチャーボックに描いているのと変わら
ないかと思います。只、初期起動時間が少し掛かるのが難ですが。
   






2003/04/22