CSVファイルから1行ずつ読み込む
今回は、ExcelにてCSVファイルを取り込む方法をご紹介します。
やり方はいろいろありますが一般的なものとして
CSVファイルを1行ずつ取り込む方法をご紹介します。
ルーチン作業でCSVファイルの値をExcelに取り込む場合、非常に有効な方法です。
また、取り込み時に応用として計算処理等を追加すれば、さらに汎用性は高くなります。
サンプルコード
Dim intFF As Integer ' FreeFile値
Dim strRec As String
Dim strSplit() As String
Dim idx as Integer
Dim OpenFile As Variant
Dim strSheetNam
strSheetNam = ActiveSheet.Name
OpenFile = "C:\Inport.csv"
idx = 0
' FreeFile値の取得(以降この値で入出力する)
intFF = FreeFile
' 指定ファイルをOPEN(入力モード)
Open OpenFile For Input As #intFF
' ファイルのEOF(End of File)まで繰り返す
Do Until EOF(intFF)
' レコード読込
Line Input #intFF, strRec
' カンマ区切りを配列に格納
strSplit = Split(strRec, ",")
' 値を貼り付け
Worksheets(strSheetNam).Cells(idx, 1).Value = strSplit(0)
Worksheets(strSheetNam).Cells(idx, 2).Value = strSplit(1)
' 次の行の為にカウントアップ
idx = idx + 1
Loop
Close #intFF
サンプルコードの解説
「Open OpenFile For Input As #intFF」で対象のCSVファイルを開きます。
サンプルコードの場合、「OpenFile = “C:\Inport.csv”」の部分からCドライブのInport.csvを指定しています。
そして「Line Input #intFF, strRec」の部分で1行ずつ読み込みます。
CSVファイルはカンマ区切りですので、Split関数を使って、配列strRecに格納します。
コード中「strSplit = Split(strRec, “,”)」の部分です。
このとき区切り文字として「”,”」を指定しましょう。
配列に格納し直してその後、シートの対象セルに貼り付けています。
「Worksheets(strSheetNam).Cells(idx, 1).Value = strSplit(0)」で1項目目、
「Worksheets(strSheetNam).Cells(idx, 2).Value = strSplit(1)」で2項目目を貼り付けています。
貼り付ける際に、Replace関数等を使って
読み込んだ値を編集することで思い通りの処理にすることもできます。
この記事のまとめ
いかがでしたでしょうか?
今回はCSVファイルから1行ずつ読み込む方法をご紹介しました。
このかたちを覚えてしまえば、読み込んだ内容から分岐したりなどの処理を組み込んで
VBAでのプログラミングの幅がぐっと広がります。
今後もExcelやVBAについてお役立ち情報などご紹介していきたいと思います!!
以上、「【Excel VBA】CSVファイルから1行ずつ読み込む」でした。