
以下のようなCSVファイル(4列あり)を…


列を指定して読み込むことができます!
※例えば「1列目」と「4列目」のみを読み込むことができます。


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

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

ただ今回ご紹介する方法では
 ・読み込み開始セルが必ずセル「A1」から
になります…。
※読み込み開始セルの指定は不可です。
前提
今回ご紹介する「VBAによる列を指定したファイルの読み込み」は、「txt」ファイルでのみできます。「csv」ファイル等ではできません。
※これは本当にイマイチです。
※VBAからPower Query(M言語)を使用すれば、CSVファイル等でもできると思います(未確認)。
※ただVBAからPower Query(M言語)の使用は、難易度が高いと思います(個人的な感想)。
よって読み込む前に「csv」ファイルを一時的に「txt」ファイルへ変更します。
※ファイルの拡張子を変更します。
VBAコード
ここでは例として、
 ・デスクトップ配下のCSVファイル「employee.csv」の
 ・1列目「id列」と4列目「section列」のみを
 ・シート「input」へ
 ・文字コード「UTF-8」で読み込み
をします。
※2列目「name列」と3列目「sex列」は読み込まないようにします。

Option Explicit
Sub readCsvFile()
    Dim sheetName As String
    Dim csvFile As String
    Dim fso As Object
    Dim sheet As Worksheet
    
    '読み込むファイル(CSV)を指定
    csvFile = "C:\Users\user\Desktop\employee.csv"
    'CSVファイルを読み込むシート名を指定
    sheetName = "input"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    '読み込むファイルの拡張子を「csv→txt」へ変更 ※ファイル名の末尾に「txt」を付与する
    fso.GetFile(csvFile).name = fso.GetFileName(csvFile) & ".txt"
    
    '作成予定のシートが既に存在する場合は削除
    For Each sheet In ThisWorkbook.Worksheets
        If sheet.name = sheetName Then
            '確認メッセージを非表示
            Application.DisplayAlerts = False
            'シート削除
            Worksheets(sheetName).Delete
            '確認メッセージを表示
            Application.DisplayAlerts = True
        End If
    Next
    
    '新規ブックへtxtファイルを読み込み(列指定)
    '1列目:2(文字列として読み込み)
    '2列目:9(読み込まない)
    '3列目:9(読み込まない)
    '4列目:2(文字列として読み込み)
    Workbooks.OpenText fileName:=fso.GetFile(csvFile & ".txt"), _
                       Origin:=65001, _
                       Comma:=True, _
                       FieldInfo:=Array(Array(1, 2), Array(2, 9), Array(3, 9), Array(4, 2))
                           
    '新規ブックの「txtファイルを読み込んだシート」のシート名を変更
    Workbooks.item(Workbooks.Count).Sheets(1).name = sheetName
    
    '新規ブックから「txtファイルを読み込んだシート」を移動 ※新規ブックは自動的に閉じる
    Workbooks.item(Workbooks.Count).Sheets(1).Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    
    '読み込むファイルの拡張子を「txt→csv」へ戻す
    fso.GetFile(csvFile & ".txt").name = fso.GetFileName(csvFile)
    
    '後片付け
    Set fso = Nothing
    
End Sub
実行結果
列を指定したCSVファイルの読み込みができました。

参考①
シート上の表(一連のセル範囲)をテーブル化することで、
 ・スタイルの設定
 ・テーブル化した範囲の名前定義
ができます。
詳細は以下の記事をご確認ください。
参考②
CSVファイル読み込みにより作成された表のデータの並び替え(ソート)もできます。
詳細は以下の記事をご確認ください。
参考③
もちろん普通にCSVファイルを読み込むこともできます。
詳細は以下の記事をご確認ください。
参考④
CSVファイルの読み込み後、不要なデータを削除したほうが良いかもしれません。
オートフィルタを使用して不要なデータを削除できます。
詳細は以下の記事をご確認ください。
参考⑤
シートへ読み込んだデータを、配列へ格納することもできます。
詳細は以下の記事をご確認ください。
参考⑥
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Workbooks」オブジェクトの「OpenText」メソッド
●「Worksheet」オブジェクトの「Move」メソッド

 
  
  
  
  





