大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、複数のファイルを開く方法について、ご紹介します。複数のファイルを開くには、Dirをループさせるとできます。大量のファイルから、データを取得したい場合に使えます。具体的なVBAコードを使って、解説していきます。

はじめに

この記事では、複数のファイルを開く方法について、ご紹介します。

複数のファイルを開くには、「Workbooks.Open」と「Dir」を使えば、できます。

大量のファイルからデータを取得したい場合に、便利です。

拡張子をCSVに指定して、ファイルを開くこともできて、応用が利きます。

では、複数のファイルを開く方法について、解説していきます。

この記事で紹介すること

  • 複数のファイルを開く方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、複数ファイルを開く方法について、ポイントとなるVBAコードをまとめておきます。

VBAコードだけ確認したい場合に、ご活用ください。

'複数ファイルを開く
a = ThisWorkbook.Path & "\保存" 'フォルダパス
b = Dir(a & "\*") 'ファイル名を取得
Do While b <> ""
    'ファイルを開く
    Workbooks.Open Filename:=a & "\" & b
    b = Dir() '次のファイル名を取得
Loop

では、解説していきます。

VBAでDirを使って複数ファイルを開く

複数のファイルを開くには、「Dir」を使うと便利です。

複数のファイルを開く方法について、解説します。

ファイルを開く方法

まずは、ファイルを開く方法です。

ファイルを開くには、「Workbooks.Open」を使います。

VBAコードを書くと次のようになります。

Sub TEST1()
    
    'ファイルパスを指定
    a = ThisWorkbook.Path & "\保存\TEST.xlsx"
    'ファイルを開く
    Workbooks.Open Filename:=a
    
End Sub

「Filename:=〇〇」の〇〇に、開きたいファイルパスを入力します。

では、次のようなフォルダ構成で試してみます。

フォルダ構成

フォルダ構成

「保存」フォルダに「TEST.xlsx」ファイルが入っています。

この「TEST.xlsx」ファイルを開きます。

では、VBAコードを実行してみます。

ファイルを開く

Workbook.Openでファイルを開いた結果

「TEST.xlsx」ファイルを開くことができました。

フォルダ指定+Dirでファイルを開く

次は、フォルダを指定して、そのフォルダの中のファイルを開く、というのをやってみます。

Dirを使ったVBAコードは次のようになります。

Sub TEST2()
    
    'フォルダパスを取得
    a = ThisWorkbook.Path & "\保存"
    'ファイル名を取得
    b = Dir(a & "\*")
    'ファイルを開く
    Workbooks.Open Filename:=a & "\" & b
    
End Sub

「Dir(フォルダパス & "\*"」でフォルダの中のファイルを一つ取得できます。

次のようなフォルダ構成で、試してみました。

フォルダ構成

フォルダ構成

「保存」フォルダの中に「TEST.xlsx」ファイルが保存されています。

では、VBAコードを実行してみます。

ファイルを開く

Dirを使ってファイル名を取得してファイルを開いた結果

「TEST.xlsx」ファイルを開くことができました。

ファイル名は指定していないけれども、フォルダの中のファイル名を「Dir」で取得して、ファイルを開くことができます。

Dirをループして複数ファイルを開く

では、Dirをループして、複数ファイルを開く方法です。

ポイントは、「Dir」を「Do While」でループして、フォルダの中のファイル名を、取得することです。

VBAコードは次のようになります。

Sub TEST3()
    
    'フォルダパスを指定
    a = ThisWorkbook.Path & "\保存"
    'ファイル名を取得
    b = Dir(a & "\*")
    
    Do While b <> ""
        'ファイルを開く
        Workbooks.Open Filename:=a & "\" & b
        b = Dir() '次のファイル名を取得
    Loop
    
End Sub

「Do While」で「Dir()」をループすると、ファイルがなくなるまでファイル名を取得し続けてくれます。

この部分です。

Dirをループする

'ファイル名を取得
b = Dir(a & "\*")
Do While b <> ""
    b = Dir() '次のファイル名を取得
Loop

フォルダの中のファイル名を取得する際に、「Dir」が使えます。

次のようなフォルダ構成で試してみます。

フォルダ構成

フォルダ構成

「保存」フォルダに「TEST1.xlsx~TEST5.xlsx」が入っています。

VBAコードを実行してみます。

複数のファイルを開く

Dirをループして複数のファイルを開いた結果

「TEST1.xlsx~TEST5.xlsx」のファイルを開くことができました。

複数のExcelファイルから値を取得

つづいて、複数のExcelファイルを開いて、開いたファイルから値を取得してみます。

VBAコードはこちらになります。

Sub TEST4()
    
    'フォルダパスを指定
    a = ThisWorkbook.Path & "\保存"
    'ファイル名を取得
    b = Dir(a & "\*")
    
    i = 0
    Do While b <> ""
        'ファイルを開く
        Workbooks.Open Filename:=a & "\" & b
        i = i + 1
        'ファイル名を取得
        ThisWorkbook.ActiveSheet.Cells(i, 1) = ActiveWorkbook.Name
        'セルの値を取得
        ThisWorkbook.ActiveSheet.Cells(i, 2) = ActiveWorkbook.ActiveSheet.Cells(1, 1)
        'ファイルを閉じる
        ActiveWorkbook.Close
        b = Dir()
    Loop
    
End Sub

新しく開いたブックは「ActiveWorkbook」で、実行しているブックは「ThisWorkbook」になります。

ActiveWorkbookの値を、ThisWorkbookのシートに代入しています。

次のようなフォルダ構成で試してみます。

フォルダ構成

フォルダ構成

「保存」フォルダに「TEST1.xlsx~TEST5.xlsx」を入れています。

それぞれのファイルには、セルA1に値が入力されています。

ファイルに保存されている値

それぞれのファイルに保存されている値

「TEST1.xlsx~TEST5.xlsx」に「A~E」の値を入力しました。

では、VBAコードを実行してみます。

複数ファイルを開いて値を取得

複数ファイルを開いて値を取得した結果

複数ファイルから値を取得できました。

ファイルが複数あっても、VBAを使えば簡単にデータを取得することができます。

VBAで複数のCSVファイルを操作

「Dir」を使えば、拡張子を指定して、ファイルを開くこともできます。

複数のCSVファイルを開く

拡張子を「CSV」に指定して、複数ファイルを開いてみます。

複数のCSVファイルを開くVBAコードは、次のようになります。

Sub TEST5()
    
    'フォルダパスを指定
    a = ThisWorkbook.Path & "\保存"
    'ファイル名を取得
    b = Dir(a & "\*.csv")
    
    Do While b <> ""
        'ファイルを開く
        Workbooks.Open Filename:=a & "\" & b
        b = Dir() '次のファイル名を取得
    Loop
    
End Sub

拡張子を、CSVにするには、「Dir(フォルダパス & "\*.csv")」とすれば、できます。

次のフォルダ構成で、試してみます。

フォルダ構成

フォルダ構成

「保存」フォルダの中に、「TEST1~TEST5.xlsx」と「TEST1~TEST5.csv」を保存しました。

この中から、「TEST1~TEST5.csv」だけを開きます。

では、VBAコードを実行します。

複数のCSVファイルを開く

複数のCSVファイルを開いた結果

複数のCSVファイルを開けました。

フォルダの中には、「.xlsx」と「.csv」ファイルがありました。

この中から、CSVファイルだけを開くことができました。

こんな感じで「Dir」を使うと、拡張子を指定することができます。

複数のCSVファイルから値を取得

次は、複数のCSVファイルを開いて、CSVファイルの値を取得してみます。

VBAコードは次のようになります。

Sub TEST6()
    
    'フォルダパスを指定
    a = ThisWorkbook.Path & "\保存"
    'CSVのファイル名を取得
    b = Dir(a & "\*.csv")
    
    i = 0
    Do While b <> ""
        'ファイルを開く
        Workbooks.Open Filename:=a & "\" & b
        i = i + 1
        'ファイル名を取得
        ThisWorkbook.ActiveSheet.Cells(i, 1) = ActiveWorkbook.Name
        'ファイルの値を取得
        ThisWorkbook.ActiveSheet.Cells(i, 2) = ActiveWorkbook.ActiveSheet.Cells(1, 1)
        'ファイルを閉じる
        ActiveWorkbook.Close
        b = Dir() '次のファイル名を取得
    Loop
    
End Sub

開いたブックは「Activeworkbook」で、マクロを実行しているブックが「ThisWorkbook」になります。

試してみたフォルダ構成は次です。

フォルダ構成

フォルダ構成

「保存」フォルダに「TEST1~TEST5.csv」ファイルが保存されています。

「TEST1~TEST5.csv」ファイルには、セルA1に「A~E」が入力されています。

CSVファイルの値

CSVファイルに入力されている値

では、VBAコードを実行してみます。

複数のCSVファイルから値を取得

複数のCSVファイルを開いて値を取得した結果

複数のCSVファイルを開いて値を取得できました。

こんな感じで「Workbooks.Open」と「Dir」を使えば、複数ファイルを開くことができます。

大量のファイルから値を取得したい場合に使えます。

おわりに

この記事では、複数のファイルを開く方法について、ご紹介しました。

複数のファイルを開くには、「Workbooks.Open」と「Dir」を使えば、できます。

「Dir(フォルダパス & "\*.csv")」と入力すれば、拡張子をCSVファイルに指定することもできます。

大量のファイルからデータを取得したい場合に、複数のファイルを開く方法が使えます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す