📘 Excel逆引き事典

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

日々の業務で大量のCSVファイルを手作業でExcelに移動させているあなた。その労力を削減し、時間を節約するためにこの記事では、CSVファイルを配列を使って高速に転記するVBAマクロを作成します。

サンプルコード

VBA
Option Explicit
Sub CSVToArrayTransfer()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' CSVファイルのパスを指定
    Dim csvFilePath As String
    csvFilePath = "C:\path\to\your.csv"
    
    ' CSVファイルを開く
    Dim fso As Object, ts As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ts = fso.OpenTextFile(csvFilePath)
    
    ' 配列にCSVデータを読み込む
    Dim csvData() As String
    ReDim csvData(1 To 1048576, 1 To 256) '最大行数と最大列数を指定
    Dim i As Long, j As Integer
    i = 1
    Do While Not ts.AtEndOfStream
        For j = 1 To UBound(csvData, 2)
            csvData(i, j) = Split(ts.ReadLine, ",")(j - 1)
        Next j
        i = i + 1
    Loop
    ts.Close
    Set fso = Nothing
    
    ' Excelシートに配列を書き込む
    Dim lastRow As Long
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    ws.Range("A" & (lastRow + 1)).Resize(UBound(csvData, 1), UBound(csvData, 2)) = csvData
    
    ' 必要に応じて高速化と画面更新停止を設定
    Application.ScreenUpdating = False
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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