[ Excel-VBA ] csv ファイルを読み込みシートに貼り付ける ( Range.Resize.Offset )

Pocket

ここでは、VBA で csv 形式のデータファイルを読み込み、エクセルシート上に展開するサンプルスクリプトを掲載しています。

スポンサーリンク

使用する csv ファイル

ここ紹介するスクリプトでは、以下の csv 形式のデータファイルを使用するものとします。

11,12,13
21,22,23,24
31,32,33,34,35

csv データを Excel シート上に貼り付ける

上記の csv ファイルを読み込みエクセルシート上に展開するサンプルスクリプトです。1行ずつ配列に格納したデータを一気にシート上に展開しています。詳細はサンプル内のコメントを参照ください。

' 変数宣言は必須
Option Explicit

' ボタンクリックイベント
Private Sub CommandButton1_Click()

    Dim lineStr As String   ' 1行読み込み用のバッファ
    Dim arrayStr As Variant ' 1行データを格納する配列
    Dim rowIndex As Integer ' 出力する開始行のオフセット
    
    ' csv ファイルをオープン
    Open "E:\test.csv" For Input As #1
    
    rowIndex = 0 ' シートには出力開始行から出力 
    
    ' ファイルの最後まで読み込む
    Do While Not EOF(1)
        ' CSV ファイルを1行読み込み
        Line Input #1, lineStr
        ' カンマ区切りで分割し配列に格納
        arrayStr = Split(lineStr, ",")
        ' A1 セルを基点にして、列数を配列の要素数分広げ、行数のオフセット分ずらして展開する
        Range("A1").Resize(1, UBound(arrayStr) + 1).Offset(rowIndex) = arrayStr
        ' 行オフセットをインクリメント        
        rowIndex = rowIndex + 1
    Loop
    ' csv ファイルを閉じる
    Close #1

End Sub
    

スクリプトの動作結果

サンプルの csv ファイルをエクセルシート上に展開した結果は次の通りです。

csvデータをシートに展開する

csvデータをシートに展開した結果

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>