CSVファイルを…
シートへ読み込めます!
CSVファイルに「001」とある場合、
シート上も「001」となるようにします!
※0が消えて「1」とならないようにします。
読み込む際の文字コードは
・UTF-8
・Shift_JIS
を指定できます!
またこの方法は
・1度にまるっと読み込む方法であるため
・高速にCSVファイルを読み込む
ことができます!
※繰り返し処理により1行ずつ読み込むのではないため、高速に読み込めます。
※他サイトに記載の方法は、繰り返し処理より1行ずつ読み込んでいます。
※そのため他サイトに記載の方法では、時間が掛かってしまいます。
VBAコード
ここでは例として
・デスクトップ配下のCSVファイル「sample.csv」を
・新規作成したシート「csv」へ
・文字コード「UTF-8」で読み込み
をします。
Option Explicit
Sub sample()
Dim csvFile As String
Dim csvSheetName As String
Dim sheet As Worksheet
Dim csvSheet As Worksheet
Dim i As Long
Dim n As Variant
Dim arrDataType(255) As Long
'読み込むCSVファイル
csvFile = "C:\Users\user\Desktop\sample.csv"
'CSVファイルを読み込むシート名
csvSheetName = "csv"
'既にシート「csv」が存在する場合は削除
For Each sheet In ThisWorkbook.Worksheets
If sheet.name = csvSheetName Then
'確認メッセージを非表示
Application.DisplayAlerts = False
'シート削除
Worksheets(csvSheetName).Delete
'確認メッセージを表示
Application.DisplayAlerts = True
End If
Next
'シート「csv」を新規作成
Set csvSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
csvSheet.name = csvSheetName
'読み込むファイルの形式を【文字列】と指定するための配列を作成
For i = 0 To 255
arrDataType(i) = xlTextFormat
Next
'「QueryTableオブジェクト(=クエリと接続)」を作成
With csvSheet.QueryTables.Add(Connection:="TEXT;" + csvFile, Destination:=Range("B2"))
'区切り文字に「カンマ区切り」を指定
.TextFileCommaDelimiter = True
'文字コードに「UTF-8」を指定
.TextFilePlatform = 65001
'読み込み開始行を指定
.TextFileStartRow = 1
'読み込むファイルの形式を指定
.TextFileColumnDataTypes = arrDataType
'読み込み実行
.Refresh BackgroundQuery:=False
'名前(後続で削除できるように名前を設定)
.name = "仮テーブル"
'作成された「QueryTableオブジェクト(=クエリと接続)」を削除
.Delete
End With
'上記で作成されてしまう名前定義(仮テーブル)を削除
For Each n In ActiveWorkbook.Names
If n.name = csvSheetName & "!" & "仮テーブル" Then
n.Delete '
End If
Next
End Sub
実行結果
CSVファイルをシート「csv」へ読み込めました。
参考①
シート上の表(一連のセル範囲)をテーブル化することで、
・スタイルの設定
・テーブル化した範囲の名前定義
ができます。
詳細は以下の記事をご確認ください。
参考②
複数のCSVファイルをシートへ読み込むこともできます。
詳細は以下の記事をご確認ください。
参考③
CSVファイルから特定の文字列を含む行のみをシートへ読み込むこともできます。
詳細は以下の記事をご確認ください。
参考④
CSVファイルから特定の列のみをシートへ読み込むこともできます。
詳細は以下の記事をご確認ください。
参考⑤
CSVファイルの読み込み後、データを並び替え(ソート)したほうが良いかもしれません。
データを並び替える(ソートする)方法は、以下の記事をご確認ください。
参考⑥
CSVファイルの読み込み後、不要なデータを削除したほうが良いかもしれません。
オートフィルタを使用して不要なデータを削除できます。
詳細は以下の記事をご確認ください。
参考⑦
シートへ読み込んだデータを、配列へ格納することもできます。
詳細は以下の記事をご確認ください。
参考⑧
Webページ上の表をシートへ取り込む(=読み込む)こともできます。
詳細は以下の記事をご確認ください。
参考⑨
PowerShellでCSVファイルをExcelファイルにすることもできます。
詳細は以下の記事をご確認ください。
参考⑩
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「QueryTables.Add」
●「QueryTableオブジェクト(=クエリと接続)」