VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 Excel・Word・VBA関係のメニュー
1.VB2013 から Excel 2013 を操作する為の基本的な操作方法
2.Excel 操作ワンポイントテクニック集その1
3.Excel 操作ワンポイントテクニック集その2
4.VB2013から Excel にデータを送りグラフを表示する
5.Excel のグラフをクリップボード経由で PictureBox に貼付
6.Excel 2013 の WEB クエリを VB2013 から操作する
7.
8.
9.
10.
11.VB2013から Word の起動・終了処理及び文字の書き込み例
12.Wordの差し込み印刷機能を使って宛て名ラベルを印刷
13.
20.その他、当サイト内に掲載のExcel・Word・VBAに関するサンプル


4.VB2013から Excel にデータを送りグラフを表示する(09_Xls_04) (旧、SampleNo.064)
1.VB2013から Excel にデータを送りグラフを表示する
2.
3.
4.
5.
6.

 ※ 起動及び終了処理及び使用関数等の記載が漏れていたらExcel 操作ワンポイントテクニック集その1(09_Xls_02)の方をご覧下さい。

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 / Excel 2013
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :Microsoft.Office.Interop
参照設定:
Microsoft Excel 15.0 Object Library / WaitTime.dll   参照設定方法参照
使用コン:Button1
トロール:
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.VB2013から Excel にデータを送りグラフを表示する

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  Call ExcelOpen("", "")   '新規ファイルをオープンして、Excel を起動
  '=============================================================================

  '---------------- グラフデータを作成及びセルに値を代入 ----------------
  'Excel のセルに値を代入します。
  Dim i, j As Integer
  Dim xlRange1 As Excel.Range = Nothing   '科目用
  Dim xlRange2 As Excel.Range = Nothing   '氏名用
  Dim xlRange3 As Excel.Range = Nothing   '点数用
  Dim graphData1(4, 0) As String      '科目用
  Dim graphData2(0, 4) As String      '氏名用
  Dim graphData3(4, 4) As Integer      '点数用

  xlRange1 = xlSheet.Range("A2:A6")
  xlRange2 = xlSheet.Range("B1:F1")
  xlRange3 = xlSheet.Range("B2:F6")
  For i = 0 To 4
    For j = 0 To 4
      '30 〜100 の範囲のランダムなデータを作成
      graphData3(j, i) = CInt(70 * Rnd() + 31)
    Next j
  Next i
  '系列名の設定
  graphData1(0, 0) = "国語"
  graphData1(1, 0) = "数学"
  graphData1(2, 0) = "英語"
  graphData1(3, 0) = "社会"
  graphData1(4, 0) = "体育"

  '項目名の設定
  graphData2(0, 0) = "石原"
  graphData2(0, 1) = "小泉"
  graphData2(0, 2) = "田中"
  graphData2(0, 3) = "平沼"
  graphData2(0, 4) = "森山"
  'セルに各データを設定
  xlRange1.Value = graphData1
  xlRange2.Value = graphData2
  xlRange3.Value = graphData3
  MRComObject(xlRange1)  '使い終わった時点で直ぐにデクリメントをしておく
  MRComObject(xlRange2)
  MRComObject(xlRange3)
  '=============== グラフの表示設定 =======================
  Dim xlCharts As Excel.ChartObjects
  Dim xlChart As Excel.ChartObject
  Dim xlChart1 As Excel.Chart
  '表示位置・グラフの大きさを指定して新しい埋め込みグラフを作成
  xlCharts = DirectCast(xlSheet.ChartObjects, Excel.ChartObjects)
  xlChart = xlCharts.Add(10, 90, 550, 300)

  Dim xlRange As Excel.Range
  xlRange = xlSheet.Range("A1:F6")  'データの入力セル範囲
  xlChart1 = xlChart.Chart
  With xlChart1

    '系列を列に変更   行は xlRows
    .SetSourceData(xlRange, Excel.XlRowCol.xlColumns)
    MRComObject(xlRange)      'xlRange の解放

    '縦棒グラフを指定
    .ChartType = Excel.XlChartType.xlColumnClustered

    'グラフのタイトルを表示
    .HasTitle = True
    Dim xlChartTitle As Excel.ChartTitle
    xlChartTitle = .ChartTitle
    xlChartTitle.Text = "中間テスト結果"
    MRComObject(xlChartTitle)    'xlChartTitle の解放

    '目盛りの設定
    Dim xlAxes As Excel.Axes
    Dim xlAxis As Excel.Axis
    xlAxes = DirectCast(xlChart1.Axes, Excel.Axes)
    xlAxis = xlAxes.Item(Excel.XlAxisType.xlValue)

    '--------------------------------------------------------------
    'データラベルの表示(すべて表示の場合)
    .ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue)

    '個別に表示する場合
    Dim xlSeries As Excel.Series
    xlSeries = DirectCast(.SeriesCollection(1), Excel.Series)
    xlSeries.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowValue)
    MRComObject(xlSeries)
    '--------------------------------------------------------------

    With xlAxis
      .MajorUnit = 20       '目盛り間隔
      .MaximumScale = 120     '目盛りの最大値
    End With
    MRComObject(xlAxis)
    MRComObject(xlAxes)

    '画面の表示状態を確認の間待つ(サンプルの動きがわかりやすくしているだけで必要ありません)
    WT.WaitTime(2000)

    '作業中のシートにグラフを表示する場合
    Dim xlChart2 As Excel.Chart
    xlChart2 = .Location(Excel.XlChartLocation.xlLocationAsObject, xlSheet.Name)
    MRComObject(xlChart2)

    'グラフを縮小表示
    Dim xlShapes As Excel.Shapes
    Dim xlShape As Excel.Shape
    xlShapes = xlSheet.Shapes
    xlShape = xlShapes.Item(1)
    '縦横を70%に縮小表示
    xlShape.ScaleWidth(0.7, MsoTriState.msoFalse, MsoScaleFrom.msoScaleFromTopLeft)
    xlShape.ScaleHeight(0.7, MsoTriState.msoFalse, MsoScaleFrom.msoScaleFromTopLeft)
    MRComObject(xlShape)
    MRComObject(xlShapes)
  End With

  '動作確認の為、2秒間表示しておく
  WT.WaitTime(2000)

  '★おまけ上記がうまく表示されたら下記も試してください。
  '3D 表示でグラフが回転しなが表示します。
  MRComObject(xlChart1)
  xlChart1 = xlChart.Chart
  xlChart1.ChartType = Excel.XlChartType.xl3DColumn
  For i = 0 To 360 Step 10
    xlChart1.Rotation = i
    WT.WaitTime(200)
  Next i

'-----------------------------------------------------------------------------------------------
 '※ Excelのグラフをクリップボード経由でPictureBoxに貼付 のコードはここへ追加する
'-----------------------------------------------------------------------------------------------

  MRComObject(xlChart1)
  MRComObject(xlChart)
  MRComObject(xlCharts)

  '================== ファイルの保存処理 ================== 

  Dim FilePath As String = Application.StartupPath & "\Test.xls"   '保存ファイル名
  If CInt(xlApp.Version) >= 12 Then
    FilePath = Application.StartupPath & "\Test.xlsx"        '保存ファイル名
  End If
  '=============================================================================
  'Excelファイルを上書き保存(True 又省略すれば)して終了処理を実行
  Call ExcelClose(FilePath, True) 'False の場合保存しないで終了
  'Excel.EXE がタスクマネージャーに残っていないか調査(実使用時は必要なし)
  WT.WaitTime(1000)
  Call ProcessCheck()
End Sub

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。