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

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

CSVファイル
CSVファイル


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

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


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

読み込む際の文字コードは
 ・UTF-8
 ・Shift_JIS
を指定できます!

PR

VBAコード

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

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」が存在する場合は削除します(14~23行目)。

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

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

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

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

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

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

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

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


PR

実行結果

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

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

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

PR

参考①

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

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

PR

参考②

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

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

PR

参考③

CSVファイルの読み込み後、データを並び替え(ソート)したほうが良いかもしれません。

データを並び替える(ソートする)方法は、以下の記事をご確認ください。

PR

参考④

CSVファイルの読み込み後、不要なデータを削除したほうが良いかもしれません。

オートフィルタを使用して不要なデータを削除できます。

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


PR

参考⑤

Webページ上の表をシートへ取り込む(=読み込む)こともできます。

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

PR

参考⑥

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

●「QueryTables.Add」


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

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