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他を使用する等)する方法を使って下さい。 |