【コピペでOK】VBAでフォルダ内CSVを一括統合!コピペで使えるコード紹介!

コピペで使えるコード集

CSVのデータを統合したいけど、いちいち開けるのは面倒
沢山あるCSVのどこに必要なデータがあるかわからない…

社内業務で溜まってしまいがちなのが、システムから出力されるCSVファイルです。CSVはエクセルで編集でき便利ですが、一つずつ開けて確認する手間がかかりますよね。溜まってしまうと、ほしいデータを見つけるだけで、かなりの時間がかかってしまいます。

そんな時に便利なのが、今回紹介するCSV統合VBAです。このVBAでは、フォルダに入っているCSVを一つのエクセルにまとめることができます。これにより検索性が格段に向上します。さらに、目次作成VBAを使用することで、一覧を作成しより見やすいファイルが作成できます。

この記事ではVBAが使えない人でもわかるように、コピペで使えるコードを使って環境設定から紹介しています。ぜひこの記事を参考に、VBAの効率化を行ってみてください。

【結論】コピペで使えるCSV統合VBA

以下のコードをコピペするだけで、指定したフォルダ内のCSVファイルをエクセルに統合できます。

各CSVはシートとして追加され、CSVのファイル名がシート名になります。

Sub ImportCSVFilesToExcel()
    Dim folderPath As String
    Dim csvFile As String
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim csvData As Workbook
    Dim csvSheet As Worksheet
    Dim fileDialog As Object
    Dim i As Integer

    ' フォルダ選択ダイアログを表示
    Set fileDialog = Application.fileDialog(msoFileDialogFolderPicker)
    fileDialog.Title = "CSVファイルが入っているフォルダを選択してください"
    If fileDialog.Show = -1 Then
        folderPath = fileDialog.SelectedItems(1) ' 選択したフォルダパスを取得
    Else
        MsgBox "フォルダが選択されていません。処理を中止します。"
        Exit Sub
    End If

    ' 新しいワークブックを作成
    Set wb = Workbooks.Add

    ' フォルダ内のCSVファイルを順番に処理
    csvFile = Dir(folderPath & "\*.csv")
    Do While csvFile <> ""
        ' CSVファイルを開く
        Set csvData = Workbooks.Open(folderPath & "\" & csvFile)
        
        ' CSVファイルの内容を新しいシートにコピー
        Set csvSheet = csvData.Sheets(1)
        csvSheet.Copy After:=wb.Sheets(wb.Sheets.Count) ' 新しいシートにコピー
                
        ' CSVファイルを閉じる
        csvData.Close False
        
        ' 次のCSVファイルを取得
        csvFile = Dir
    Loop

    ' 初期シート(最初のシート)を削除
    Application.DisplayAlerts = False ' 削除確認ダイアログを非表示にする
    wb.Sheets(1).Delete
    Application.DisplayAlerts = True ' 削除確認ダイアログを再表示
    ' 終了メッセージ
    MsgBox "CSVファイルのインポートが完了しました!"
End Sub

CSV統合VBAの動作

フォルダに入っているCSVを、一つのエクセルファイルにまとめるVBAになります。新しいエクセルにコードを打ち込んで使用します。

※動作イメージ/複数のCSVが、一つのエクセルにシートごとに保存される。

CSV統合VBAの使い方

フォルダの準備

はじめに、統合したいCSVファイルを一つのフォルダにまとめます。なお、CSVファイル以外は読み込まれませんので、注意してください。

VBAの埋め込み/ボタンの挿入

まず、エクセルで[Alt] + [F11]と入力しVBAエディターを開きます。そして、[挿入]→[標準モジュール]と選択してください。

すると、新しいモジュール(コードを入力する場所)が作成されるので、コードを貼り付けます。

なお、私は環境設定で画面を黒くしています。標準では背景が白になっていますが気にせず貼り付けてください。

また、環境設定などの細かい方法は以下記事にまとめています。そちらもぜひ参考にしてみてください。

実行・実行後の結果

[F5]を押すとマクロが実行されます。フォルダ選択ダイアログが表示されるので、統合したいCSVファイルが入ったフォルダを選択します。

なお、フォルダ内のCSVは表示されません。「項目はありません」と表示されますが、[OK]を押してください。

※フォルダ選択画面。フォルダを正しく選択しても、CSVは表示されないので注意

CSVがエクセルのシートになって、保存されます。なお、シート名はCSVのファイル名です。

【発展】リンク付き目次作成VBAとの組み合わせ

リンク付き目次作成VBAを使用すると、シート名の一覧をリンク付きで作成することができます。

CSVを一つにまとめて、目次シートからリンクで飛べるようになるので、とても便利なVBAとなります。

※リンク付き目次サンプル。シート名の一覧をリンク付きで自動作成できる。

リンク付き目次作成VBAは下記で詳しく紹介しています。ぜひこちらも参考にしてみてください。

まとめ

CSVの統合は、パワークエリやPower BIでも行うことができます。どちらもコードが不要なので初心者向きに見えますが、実はVBAが一番手順が少なく簡単なやり方です。コードさえ用意できれば、あとは貼り付け→実行で動作ができるので、一番おすすめです。

このサイトではほかにも、コピペで使えるVBAコードを多数紹介しています。ぜひほかのコードも参考にして、効率化を行ってみてください。

コメント

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