📘 Excel逆引き事典

【VBA】CSVファイルを配列を使って高速に取得する方法

日々の業務の中で、大量のデータを取り扱うことは珍しいことではありません。特にCSVファイルから大量のデータをExcelへ取り込む際は時間がかかります。そこでこの記事では、配列を使用して高速にCSVファイルを読み込む方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub CSVToArray()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    'CSVファイルのパスを指定
    Dim csvPath As String
    csvPath = "C:\path\to\yourfile.csv"
    
    'CSVファイルを開く
    Dim fileNum As Integer
    fileNum = FreeFile
    Open csvPath For Input As #fileNum
    
    '配列の初期化
    Dim data() As String
    ReDim data(1 To 1, 1 To 1)
    
    'データ読み込み
    Do Until EOF(fileNum)
        Line Input #fileNum, data(LBound(data) To UBound(data))
        ReDim Preserve data(1 To UBound(data, 1) + 1, 1 To UBound(data, 2))
    Loop
    
    'データをシートに書き込み
    ws.Range("A1").Resize(UBound(data), UBound(data, 2)).Value = data
    
    'ファイルクローズ
    Close #fileNum
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。