[ 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

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

  1. sh

    はじめまして
    マクロを使う機会があり、手法を探しているうちにこちらのサイトに
    たどり着きました。CSVの取り込み方法、わかりやすいです。

    1つ質問なのですが、マクロを実行した時に、別ページに展開できたら
    いいなと思っているのですが、そのようなことは上記のソースでどこを
    変更すれば実現できそうでしょうか?

    お手数おかけしますがよろしくおねがいします。

Leave a Comment

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