📘 Excel逆引き事典

【VBA】CSVファイルを配列に高速格納する方法

手作業でのデータ入力は時間がかかり、ミスのリスクも高まります。この記事では、CSVファイルを高速かつ効率的にExcelの配列に格納する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub CSVToArray()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' ファイルパスの指定
    Dim filePath As String
    filePath = "C:\path\to\yourfile.csv"
    
    ' CSVファイルを読み込み、配列に格納
    Dim csvData() As Variant
    csvData = ReadCSV(filePath)
    
    ' 配列の内容をワークシートに出力
    ws.Cells(1, 1).Resize(UBound(csvData, 1), UBound(csvData, 2)).Value = csvData
End Sub

Function ReadCSV(ByVal filePath As String) As Variant
    Dim fileNum As Integer
    Dim line As String
    Dim data() As String
    Dim row As Long
    Dim col As Long
    
    ' ファイルを開く
    fileNum = FreeFile
    Open filePath For Input As #fileNum
    
    ' 配列の初期化
    ReDim csvData(1 To 1, 1 To 1)
    row = 1: col = 1
    
    ' ファイルからデータを読み込む
    Do While Not EOF(fileNum)
        Line Input #fileNum, line
        data = Split(line, ",")
        For Each d In data
            csvData(row, col) = d
            col = col + 1
        Next d
        row = row + 1: col = 1
    Loop
    
    ' 配列のサイズを調整
    ReDim Preserve csvData(1 To row - 1, 1 To UBound(data) + 1)
    
    ' ファイルを閉じる
    Close #fileNum
    
    ReadCSV = csvData
End Function

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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