【VBA】CSVファイルをシートへ読み込む

以下のようなCSVファイルを、

CSVファイル
CSVファイル


以下のようにシートへ読み込めます!

CSVファイルを読み込んだシート
CSVファイルを読み込んだシート


CSVファイルに「001」とある場合、
シート上も「001」となるようにします!
※0が消えて「1」とならないようにします。

文字コードを指定することで、
 ・UTF-8
 ・Shift_JIS
のファイルを読み込めます!

PR

VBAコード

ここでは例として、
 ・デスクトップ配下の文字コード「UTF-8」のCSVファイル「sample.csv」を
 ・新規作成したシート「csv」へ
読み込みます。

CSVファイル。文字コードは「UTF-8」
CSVファイル。文字コードは「UTF-8」
Option Explicit

Sub sample()

    '読み込むCSVファイル
    Const CSV_FILE As String = "C:\Users\user\Desktop\sample.csv"
    'CSVファイルを読み込むシート名
    Const CSV_SHEET_NAME As String = "csv"
    
    Dim sheet As Worksheet
    Dim csvSheet As Worksheet
    
    '既にシート「csv」が存在する場合は削除
    For Each sheet In ThisWorkbook.Worksheets
        If sheet.Name = CSV_SHEET_NAME Then
            '確認メッセージを非表示
            Application.DisplayAlerts = False
            'シート削除
            Worksheets(CSV_SHEET_NAME).Delete
            '確認メッセージを表示
            Application.DisplayAlerts = True
        End If
    Next
    
    'シート「csv」を新規作成
    Set csvSheet = Worksheets.Add(After:=Worksheets(Worksheets.Count))
    csvSheet.Name = CSV_SHEET_NAME

    '「QueryTableオブジェクト(=クエリと接続)」を作成
    With csvSheet.QueryTables.Add(Connection:="TEXT;" + CSV_FILE, _
                                              Destination:=Range("B2"))
        '区切り文字に「カンマ区切り」を指定
        .TextFileCommaDelimiter = True
        '文字コードに「UTF-8」を指定
        .TextFilePlatform = 65001
        '読み込み開始行を指定
        .TextFileStartRow = 1
        '読み込むファイルの1~3列目の形式に「文字列」を指定
        .TextFileColumnDataTypes = Array(xlTextFormat, xlTextFormat, xlTextFormat)
        '読み込み実行
        .Refresh BackgroundQuery:=False
        '作成された「QueryTableオブジェクト(=クエリと接続)」を削除
        .Delete
    End With
    
End Sub

既にシート「csv」が存在する場合は削除します。

「Worksheets.Add(After:=Worksheets(Worksheets.Count))」によって、シートの最後(一番右)にシート「csv」を新規作成します。

「QueryTables.Add」で「QueryTableオブジェクト(=クエリと接続)」を作成します。
※CSVの読み込みを実行した後に削除(Delete)します。

作成した「QueryTableオブジェクト(=クエリと接続)」に
 ・各種設定をして
 ・読み込みを実行
します。

「Destination」に「Range(“B2”)」と指定しているため、
 ・読み込んだ内容はセル「B2」から設定
されます。

区切り文字を「カンマ区切り」とするために、
 ・「TextFileCommaDelimiter」に「True」
を指定しています。

文字コードを「UTF-8」とするために、
 ・「TextFilePlatform」に「65001」
を指定しています。
※Shift_JISの場合は「932」を指定します。

「TextFileStartRow」に読み込み開始行を指定します。
※CSVファイルを出力したシステム独自のヘッダが存在する場合、そのヘッダを読み込みたくない時に「3」等を指定します。

読み込むファイルの1~3列目の形式を「文字列」とするために、
 ・「TextFileColumnDataTypes」に
 ・「Array(xlTextFormat, xlTextFormat, xlTextFormat)」
を指定しています。
※「文字列」以外(日付など)も指定できます。詳細は下記の公式サイトをご確認してください。


PR

実行結果

CSVファイルをシート「csv」へ読み込めました。

CSVファイルを読み込んだシート
CSVファイルを読み込んだシート

列幅は自動で調整されます。

PR

参考①

シート上の表(一連のセル範囲)をテーブル化することで、
 ・スタイルの設定
 ・テーブル化した範囲の名前定義
ができます。

詳細は以下の記事をご確認ください。

PR

参考②

CSVファイルから特定の文字列を含む行のみをシートへ読み込むこともできます。

詳細は以下の記事をご確認ください。

PR

参考③

CSVファイル読み込みにより作成された表のデータの並び替え(ソート)もできます。

詳細は以下の記事をご確認ください。

PR

参考④

上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。

●「QueryTables.Add」


●「QueryTableオブジェクト(=クエリと接続)」

タイトルとURLをコピーしました