開いているすべてのブックを一括処理する

開いているブックファイルを順次処理するコードです。複数のファイルを一括処理したいものの、それらがフォルダーにまとまっていなかったり、自分で取捨選択したい場合に使います。

あらかじめ対象のファイルをすべて開いておく必要があります。このため、多量のファイルの処理には不向きです。

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, ".")))

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