【VBAマクロ】CSVファイルのデータ取込方法(1ファイルの場合)
(1)CSVデータ取込み
VBAコード(1ファイルのCSVデータ取込み)
Sub csvデータ取込()
'
' csvデータ取込(1ファイルの場合)
'
Dim filePath As String: filePath = "C:\Excelテスト\Note01\【VBAマクロ】CSVファイルデータ取込方法\1ファイル\csv\CSVデータ.csv"
Dim charCode As String: charCode = "Shift_JIS"
Dim sheetName As String: sheetName = "データ"
Dim textFileDataObj As Object
Dim textData As Variant
Dim arrRowData As Variant '()なしの宣言(カッコなしでVariantにすると、変数が代入されれば変数になり、配列が代入されれば配列になる)
Dim row As Long
Dim arrCsvRowData As Variant '()なしの宣言(カッコなしでVariantにすると、変数が代入されれば変数になり、配列が代入されれば配列になる)
'■実行確認
If MsgBox("処理を実行しますか?", vbYesNo + vbQuestion, "実行確認") = vbNo Then
Exit Sub
End If
'■CSVデータ取得
'
'読み込んだテキストデータのオブジェクト作成
Set textFileDataObj = CreateObject("ADODB.stream")
With textFileDataObj
.Charset = charCode '文字コードを設定
.Open 'オブジェクトを開く
.LoadFromFile filePath 'CSVファイルからデータを取得
textData = .readtext '変数:textDataへ代入
.Close 'オブジェクトを閉じる
End With
'■データ書込み
'
'セルのデータを削除する(値のみ削除)
Sheets(sheetName).UsedRange.Offset(1, 0).EntireRow.ClearContents 'UsedRangeでデータのあるセルを全て選択し、offsetで1行目の選択を外す
'書き込み先セルの開始行を設定
startRow = 2
'改行文字の場所でデータを分割
arrRowData = Split(textData, vbCrLf)
'分割したデータを1行ずつ処理する
For row = 0 To UBound(arrRowData)
'arrRowDataのデータがあれば、処理実行(空データの場合は処理しない)
If Len(arrRowData(row)) > 0 Then
'arrRowDataをカンマで分割し、arrCsvRowDataへ代入(ここでarrCsvRowDataは配列になる)
arrCsvRowData = Split(arrRowData(row), ",")
'セルに書き込む(arrCsvRowDataを1行ずつ貼りつけ)
Sheets(sheetName).Range("A" & startRow, "G" & startRow).Value = arrCsvRowData '指定した範囲へ一度に貼り付けされる
'startRowを次の行へ
startRow = startRow + 1
End If
Next
'■終了メッセージ
MsgBox "処理が完了しました。"
'
End Sub
実行後画面(1ファイルのCSVデータ取込み)
この記事が気に入ったらサポートをしてみませんか?