VBとエクセル間でデータのやりとり
                                                      玄関へお回り下さい。
VBとエクセル間でデータのやりとり           (017)
動作確認 : WindowsXP(SP2) VB6.0(SP6) / Excel 2000 Excel 2002 Excel 2007
    まず、VBからExcel及びWordを操作する時の注意事項を見て下さい
エクセルにVBからデータを送り表示し、CSV形式で保存及びエクセルの表をVBに取り込みテキストボックスに表示する

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 = "森山"
  'ここまでは[エクセルにデータを送りグラフを表示する]と同じです。

  '------------------ ファイルの保存処理 ------------------------
  '保存時のダイログボックスを非表示に設定
  xlApp.DisplayAlerts = False

  'エクセルに書き込んだ表をCSV形式(xlCSV)で保存する場合転禁
  xlSheet.SaveAs "C:\Temp.CSV", xlCSV '転載禁止

  '--------------- エクセルの表をVBへ読み込み -------------------
  Dim myText As String
  myText = "  "
  For i = 1 To 6
   If i = 1 Then
     '1行目の読み込み及び表示位置の設定
     myText = myText & _
        CStr(xlCells(i, 1).Value) & " " & _
        CStr(xlCells(i, 2).Value) & " " & _
        CStr(xlCells(i, 3).Value) & " " & _
        CStr(xlCells(i, 4).Value) & " " & _
        CStr(xlCells(i, 5).Value) & " " & _
        CStr(xlCells(i, 6).Value) & vbCrLf '転載禁止
   Else
     myText = myText & _
        CStr(xlCells(i, 1).Value) & "  " & _
        CStr(xlCells(i, 2).Value) & "  " & _
        CStr(xlCells(i, 3).Value) & "  " & _
        CStr(xlCells(i, 4).Value) & "  " & _
        CStr(xlCells(i, 5).Value) & "  " & _
        CStr(xlCells(i, 6).Value) & vbCrLf '転載禁止
   End If
  Next i
  '読み込んだデータをテキストボックスに表示
  Text1.Text = myText
'==================================================================
'終了処理
  Set xlCells = Nothing
  Set xlSheet = Nothing
  xlBook.Close      'Book を閉じる
  Set xlBook = Nothing
  xlApp.Quit
  Set xlApp = Nothing
End Sub

テキストボックスへの表示結果
     

VBでのCSVファイルの扱い方については”テキストファイルの読み込み・書き込み” を参考にして下さい。
上記程度のデータならどのような方法でも動作速度に変わりはないのですが、データが多い場合は、もっと高速に読み書き(ADO・DAO他を使用する等)する方法を使って下さい。


2002/04/19
2006/12/08

VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0