Home » エクセルマクロ・Excel VBAの使い方 » Workbookオブジェクト » 指定フォルダー内の全Excelファイルを開くマクロ

指定フォルダー内の全Excelファイルを開くマクロ

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「エクセルvba ファイルを開く ディレクトリ指定」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスが時折あります。

指定したディレクトリ・フォルダー内のファイルをすべて開くExcelマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索でしょうか。

「エクセル マクロ ファイルを開く loop」
「同じブック内にあるファイルを開く マクロ」
という検索キーワードも、おそらく同じようなマクロを探していたのだろうと推測しています。

[スポンサードリンク]

指定フォルダー内のExcelファイルをすべて開くサンプルマクロ

以下のマクロを実行すると「C:\tmp」フォルダーにあるExcelファイルをすべて開くことができます。


Sub 指定フォルダーのExcelファイルを全て開く()
 Const DIR_PATH = "C:\tmp"
 Dim fl_name As String

 fl_name = Dir(DIR_PATH & "\*.xls*")
 If fl_name = "" Then
  MsgBox "Excelファイルがありません。"
  Exit Sub
 End If

 Do
  Workbooks.Open Filename:=DIR_PATH & "\" & fl_name
  fl_name = Dir
 Loop Until fl_name = ""
End Sub

サンプルマクロの解説

Dir関数を使って、定数・DIR_PATHで指定されたフォルダー「C:\tmp」内の、拡張子に「xls」という文字列が含まれるファイルの、ファイル名を取得して変数・fl_nameに格納します。
  fl_name = Dir(DIR_PATH & "\*.xls*")

Dir関数は、引数に指定された条件に該当するファイルが存在しない場合には、空白文字列を返してきますから、定数・DIR_PATHで指定されたフォルダーにExcelファイルが存在していないときには、メッセージを表示してマクロを終了しています。
  If fl_name = "" Then
   MsgBox "Excelファイルがありません。"
   Exit Sub

Dir関数を、引数指定なしで呼ぶと、直前に呼ばれたときと同じ条件で次のファイルを探して、みつかればみつかったファイル名を返します。

空白が返されたとき変数・fl_nameが空白文字列になったときは、該当するすべてのファイルを探し終わったということになります。

このことを利用して、
  Do
  Loop Until fl_name = ""
という条件でDo~Loopループを回して、ループの中でExcelファイルを開く処理を行っています。

Do~Loopループの中で、WorkbooksコレクションオブジェクトのOpenメソッドを使ってファイルを開き、
  Do
   Workbooks.Open Filename:=DIR_PATH & "\" & fl_name

引数を指定せずに再度Dir関数を呼んで、同じ条件で次のファイルを探し、
   fl_name = Dir

探し終わったら(Dir関数が空白文字列を返してきたら)ループを抜け、マクロを終了しています。
  Loop Until fl_name = ""

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbookオブジェクト » 指定フォルダー内の全Excelファイルを開くマクロ

TrackBack:1

TrackBack URL
フォルダーにExcelファイルが存在するか判定する-Dir関数 from インストラクターのネタ帳
VBAのDir関数を使うと、あるフォルダーにExcelファイルが存在するかどうかを判定できます。
[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Workbookオブジェクト » 指定フォルダー内の全Excelファイルを開くマクロ

「Workbookオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.