【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.
シート名や列番号が正しいか確認してください。