【VBA】複数のcsvファイルを一括読み込みするサンプルコード

f:id:yshgs_elec:20210209213233j:plain

「csv形式で取得した大量の実験データを分析したい。」

この記事ではこんな状況で役に立つ、

【複数のcsvファイルを開いているエクセルシートに一括読み込みする】

サンプルコードをご紹介していきます。

あなたの状況に応じて修正すればどんな状況にも対応できるはずです。

それでは早速やっていきましょう!

スポンサーリンク

紹介するスキルの概要説明

まずはじめに今回の記事で紹介する内容を簡単にご説明しておきます。

今回は以下の画像のように、A2セルからA4セルに記入された3つのcsvファイルを9行目以降に順番に読み込んでいくという作業を行ってみます。

複数のcsvファイルを読み込む際に必要な情報を記入したエクセルシート

 

今回読み込むcsvファイルは以下のように2列の単純な時系列データです。

使用するcsvファイルのサンプル

また読み込むcsvファイルは以下のように、VBAを実行するファイルと同じフォルダに格納されている状況を想定してコードを書いています。

マクロ実行する際のフォルダの中身確認

状況説明はこのくらいにして、さっそくVBAコードを記述していきます。

スポンサーリンク

複数のcsvファイルを一括読み込みするVBAコード

Sub open_csv()
    '変数の型を宣言
    Dim base_file As String
    Dim file_name As String
    Dim end_row As Integer
    Dim i As Integer
    'このファイルを記憶させる
    base_file = ThisWorkbook.Name
    '開きたいファイル名を指定
    i = 0
    Do Until Cells(2 + i, 1) = ""
        'これから開くファイルを記憶させる
        file_name = Cells(2 + i, 1)
        '指定したファイルを開く(ファイルがなかったら処理をとめる)
        If Dir(ThisWorkbook.Path & "\" & file_name) <> "" Then
            Workbooks.Open (ThisWorkbook.Path & "\" & file_name)
        Else
            MsgBox "指定ファイルがありません。"
            Exit Sub
        End If
        '開いたファイルからデータをコピー
        end_row = Range("A1").End(xlDown).Row
        Range(Cells(1, 1), Cells(end_row, 2)).Copy
        'ベースファイルに張り付ける
        Windows(base_file).Activate
        Cells(9, 3 * i + 1).Select
        ActiveSheet.Paste
        '指定したcsvファイルを閉じる
        Application.CutCopyMode = False
        Windows(file_name).Close
        i = i + 1
    Loop
End Sub

基本的には

①エクセルファイルに記述してあるファイル名のcsvファイルを開く

②データの一番下の行までをコピーする(今回A列とB列をコピー)

③もともとのファイルに戻る

④コピーしたcsvファイルのデータを張り付ける

という作業を3回繰り返しているだけです。

※ひとつひとつの作業にコメントをつけておりますので、どこでどんな作業を行っているかは理解できるはずです。あなたの状況に応じて、適宜修正してご活用ください。

 

◆合わせて読みたい

csvファイルの読み込み方法についてもう少し詳しく知りたい、という方は以下の記事が参考になるはずです。

【VBA】指定したcsvファイルを開く方法!閉じるところまで一括解説!

 

スポンサーリンク

サンプルコードの実行結果

最後に先ほど紹介したコードを実行してみましょう。

この状態から・・・

「実行!!!」

マクロ実行前のエクセルシートの状態

結果は以下のようになりました。

マクロ実行後のエクセルシートの状態

しっかりと狙いの場所にデータが読み込まれていますね。

スポンサーリンク

おわりに

というわけで今回は複数のcsvファイルを一括読み込みするサンプルコードをご紹介しました。

大量の実験データのまとめ、分析の際にぜひご活用ください。

 

このように私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。

・日々の残業時間を減らしたい。

・業務をもっと効率的にこなしたい。

・もっと勉強する時間を作りたい。

こんな思いを持っている人は、ぜひ他の記事も見てみてくださいね。

 

この記事が役に立ったという方は、ぜひ応援よろしくお願いします。

↓ 応援ボタン

にほんブログ村 IT技術ブログ VBAへ
にほんブログ村

それではまた!

コメント

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