開いているブックファイルを順次処理するコードです。複数のファイルを一括処理したいものの、それらがフォルダーにまとまっていなかったり、自分で取捨選択したい場合に使います。
あらかじめ対象のファイルをすべて開いておく必要があります。このため、多量のファイルの処理には不向きです。
Dim oWB As Workbook
For Each oWB In Workbooks
Select Case LCase(Right(oWB.Name, 4))
Case "xlsx", "xlsm", ".xls"
'------------------------------
'ファイルの処理
MsgBox oWB.FullName
'------------------------------
End Select
Next oWB
処理対象ブックの判定が必要
Workbooks
コレクションは、現在開いているすべてのブックファイルです。要注意なのが、自動的に開かれている個人用マクロブック(PERSONAL.XLSB)なども含まれることです。ユーザーが開いたブックだけを対象にするため、拡張子で判別しています。
上記例ではファイル名の末尾4字を使うように簡略化していますが、きちんと拡張子を取り出すには以下のような記述になります。
LCase (Right(oWB.Name, Len(oWB.Name) - InStrRev(oWB.Name, ".")))