📘 Excel逆引き事典

【VBA】CSVファイルをバックグラウンドで配列に格納する方法

日々の業務で大量のデータを取り扱っているあなた。特にCSVファイルからデータを読み込む際は、手作業では時間がかかるだけでなくミスが起こりやすいですよね。この記事では、VBAを使ってCSVファイルを高速かつバックグラウンドで配列に格納する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub CSVToArray()
    Dim ws As Worksheet, csvFilePath As String, data() As Variant
    Set ws = ThisWorkbook.Sheets("Sheet1")
    csvFilePath = "C:\path\to\your\file.csv"
    
    ' バックグラウンド処理開始
    Application.ScreenUpdating = False
    
    ' CSVファイルを配列に格納
    data = Split(FileToString(csvFilePath), vbCrLf)
    For i = LBound(data) To UBound(data)
        ws.Cells(i + 1, 1).Value = data(i)
    Next i
    
    Application.ScreenUpdating = True ' バックグラウンド処理終了
End Sub

' CSVファイルの内容を文字列に変換する関数
Function FileToString(filePath As String) As String
    Dim fileNum As Integer, dataLine As String, result As String
    fileNum = FreeFile
    Open filePath For Input As #fileNum
    Do Until EOF(fileNum)
        Line Input #fileNum, dataLine
        result = result & dataLine & vbCrLf
    Loop
    Close #fileNum
    FileToString = Left(result, Len(result) - 2) ' 最後の改行を除く
End Function

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
CSVファイルのパスやシート名、列番号が正しいか確認してください。