CSVデータをワークシートに読み込む(QueryTablesを使う場合)
UTF-8・カンマ区切りのCSVを、新規シートへ文字列として取り込みます。読み込み後は接続定義を削除し、値だけ残します。
実行前に確認
- デスクトップExcel向けです。セル数上限内のCSVで試してください。全列を文字列にするため、数値計算には必要な列の変換が必要です。
- DeleteはQueryTableという接続定義を削除する処理です。読み込んだセルや元CSVは削除しません。失敗した場合は途中の新規シートが残る場合があります。
1サンプルコード
Sub QueryTablesでCSVを読み込む()
Dim ws As Worksheet, qt As QueryTable, filePath As String, formats() As Variant
Dim i As Long, message As String
filePath = "C:\Data\sample.csv"
On Error GoTo Failed
Set ws = ThisWorkbook.Worksheets.Add
ReDim formats(1 To ws.Columns.Count)
For i = 1 To UBound(formats)
formats(i) = xlTextFormat
Next i
Set qt = ws.QueryTables.Add(Connection:="TEXT;" & filePath, Destination:=ws.Range("A1"))
With qt
.TextFilePlatform = 65001
.TextFileParseType = xlDelimited
.TextFileCommaDelimiter = True
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = vbNullString
.TextFileConsecutiveDelimiter = False
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileColumnDataTypes = formats
.Refresh BackgroundQuery:=False
.Delete
End With
Exit Sub
Failed:
message = Err.Description
On Error Resume Next
If Not qt Is Nothing Then qt.Delete
On Error GoTo 0
MsgBox message
End Sub図で見る操作の流れ
イメージ図コードの動きを表した概念図です。実際のExcel画面ではありません。
入力:C:\Data\sample.csv
UTF-8・カンマ区切り・二重引用符のCSV
マクロ:新規シートへ読込み
QueryTableでA1から列を分けて読み込む
読込み設定:全列を文字列に
001などの先頭の0も文字として残す
マクロ:接続定義を削除
QueryTable.Deleteを実行する
結果:セルのデータは残る
新規シートに読込済みデータが残り、元CSVも残る
Deleteは元CSVやセルの削除ではありません。失敗すると途中の新規シートが残る場合があります。数値計算には必要な列の変換が必要です。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
信頼できるUTF-8のsample.csvを用意し、filePathを書き換えます。区切りはカンマ、引用符は半角の二重引用符を想定します。
- 3
実行するSubの内側にカーソルを置き、F5キーを押します。
- 4
新規シートのA1から列に分けて読み込みます。001などの先頭の0も文字列として残ります。