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