このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】フォルダ内のCSVファイルを一度で読み込むプログラム

製造機械や評価設備を扱っていると、CSVファイルを扱うことが多くあると思います。
工学系の大学で実験をしていると、実験結果がCSVファイルで出てくることは多いです。

このCSVファイルですが、数が多いとExcelファイルにまとめるだけで手間がかかったりします。

そこで今回はCSVファイルを一度で読み込むプログラムを紹介します。

1 ファイルを1シートに取り込むので、データ処理に手間がかかると感じたら試してみてください。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

フォルダ内のCSVファイルを一度で読み込むプログラム

Sub ReadCsvFiles()
    '''フォルダ内のCSVファイルを一度で読み込む
    
    ''フォルダパスをダイアログで取得
    Dim strFldrPath As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            strFldrPath = .SelectedItems(1)
        Else
            MsgBox "キャンセルされました"
            Exit Sub
        End If
    End With
    
    Dim fso As Object, fldr As Object, f As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fldr = fso.GetFolder(strFldrPath)
    
    '' フォルダ内の各CSVファイルを読み込む
    For Each f In fldr.Files
        
        ' CSVファイル以外は処理しない
        If fso.GetExtensionName(f.Name) <> "csv" Then GoTo Continue
        
        ' CSVファイルを新規シートに読み込む
        CSVInputWith0 f.Path
Continue:
    Next
    MsgBox "読み込み完了!"
End Sub

Private Sub CSVInputWith0(strFilePath As String)
    '''CSVファイルをアクティブブックの新規シートに読み込む
    
    'TextFileColumnDataTypesプロパティ用の配列作成
    Dim arrDT(1 To 100) As Long, i As Long
    For i = 1 To 100
        arrDT(i) = xlTextFormat 'テキスト形式
    Next
    
    '' 新規シート作成
    With ActiveWorkbook.Sheets.Add
        'クエリテーブル実行
        With .QueryTables.Add(Connection:="text;" & strFilePath, Destination:=Range("A1"))
            .TextFilePlatform = 65001 'UTF8
            .TextFileCommaDelimiter = True
            .TextFileColumnDataTypes = arrDT
            .Refresh BackgroundQuery:=False
            .Delete
        End With
    End With
End Sub

このプログラムを実行すると、↓のフォルダ選択ダイアログが表示されます。

フォルダを選択すると、フォルダ内のCSVファイルが順番に読み込まれ、アクティブなExcelファイルに取り込まれます。

新しいシートが作成され、1つのCSVファイルが1シートに取り込まれます。

CSVファイルの処理が手間に感じたら活用してみてください。

「フォルダパスをダイアログで取得する方法」と、「CSVファイルを読み込む方法」については別記事にて解説しています。

下記記事をご覧ください。

《VBA上級者になりたい人へ》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。
この本を読み切れば間違いなくVBA上級者になれます。

VBAが難しいと感じたら
ココナラにてVBAの作成依頼を受け付けています。
ご依頼・ご相談はこちらから

VBA

Posted by やろまい