【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ファイルのパスやシート名、列番号が正しいか確認してください。