#はじめに
とあるフォルダーに処理したいファイルを複数個入れて、それらを読み込んで処理するコードです。
#コード
Sub test()
'パスの指定。このコードではマクロがあるフォルダーを指定
DIR_PATH = ThisWorkbook.Path
Dim fl_name As String
fl_name = Dir(DIR_PATH & "\*.xlsx*")
If fl_name = "" Then
MsgBox "エクセルファイルがありません。"
Exit Sub
End If
Do
Workbooks.Open Filename:=DIR_PATH & "\" & fl_name
fl_name = Dir
'ここに処理を入れる。
Cells(1,1)="Hello"
Loop Until fl_name = ""
End Sub
#コードの説明
最初にパスを設定します。
上のコードでは、Thisworkbook.Pathとしているため、このマクロが書かれたファイルのある場所を読み込むことになります。
また読み込むファイルの拡張子を"xlsx"と指定しています。この2箇所を変えることで、他の場所・ファイルを読み込むことが出来ます。
後はDo loopで全てのファイルに処理を施します。今回はセルの(1,1)、すなわちセルA1にHelloと入力されます。
#実際の使い方
例えば下の画像のような状態でtestに入れた上記のコードを実行すると、Book1~Book4のセルA1が"Hello"になります。
#終わりに(注意点)
- このコードはopenでファイルを開くため、実行する処理の最後にcloseを入れた方がいいです。特に大量のファイルを処理する前にはテストをしておかないとPCが落ちてしまいます。
- このコードは処理速度の最適化が出来てません。
- 最後までお読みいただきありがとうございます。