【VBA】CSVファイルを開かずに配列に格納する方法
手作業でCSVデータを取り扱うのは時間がかかります。この記事では、VBAを使って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, lineData As Variant, allLines() As String
fileNum = FreeFile()
Open csvPath For Input As #fileNum
Do Until EOF(fileNum)
Line Input #fileNum, lineData
ReDim Preserve allLines(1 To UBound(allLines) + 1)
allLines(UBound(allLines)) = lineData
Loop
Close fileNum
'CSVデータを配列に格納
Dim dataArray() As String
Dim i As Long, lastRow As Long
ReDim dataArray(1 To UBound(allLines), 1 To Split(allLines(1), ",").Length)
For i = LBound(allLines) To UBound(allLines)
If i > 1 Then 'ヘッダー行をスキップする場合
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row + 1
Dim rowArray() As String
rowArray = Split(allLines(i), ",")
For j = LBound(rowArray) To UBound(rowArray)
dataArray(i - 1, j) = rowArray(j)
ws.Cells(lastRow, j + 1).Value = rowArray(j)
Next j
End If
Next i
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。