【VBA】CSVファイルを開かずに(外部参照で)コピーする方法
日々の業務では、大量のデータを扱うことが多く、その中でも特にCSVファイルの処理は手間がかかることが多いです。しかし、VBAを使用すれば、CSVファイルを開かずに直接参照してコピーすることが可能となります。この記事では、効率的な業務遂行のために、CSVファイルを外部参照でコピーする方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub CopyFromCSV()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("目的のシート名")
' CSVファイルへのパスを指定
Dim csvPath As String
csvPath = "C:\path\to\yourfile.csv"
' CSVファイルを開かずに読み込む
Dim data As Variant
data = GetCSVData(csvPath)
' データのコピー先を指定
Dim lastRow As Long
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1
' CSVデータをシートにコピー
For i = LBound(data) To UBound(data)
ws.Range("A" & lastRow + i - LBound(data)).Value = data(i, 1)
ws.Range("B" & lastRow + i - LBound(data)).Value = data(i, 2)
' 必要に応じて、他の列もコピー
Next i
End Sub
Function GetCSVData(ByVal filePath As String) As Variant
Dim fileNum As Integer
Dim line As String
Dim lines() As String
Dim data() As Variant
' ファイルを開く
fileNum = FreeFile
Open filePath For Input As #fileNum
' CSVファイルを1行ずつ読み込む
Do Until EOF(fileNum)
Line Input #fileNum, line
lines = Split(line, vbTab) ' タブ区切りの場合
ReDim Preserve data(UBound(data) + 1)
data(UBound(data)) = lines
Loop
' ファイルを閉じる
Close #fileNum
GetCSVData = data
End Functionよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。また、CSVファイルへのパスも正しく指定されているか確認してください。