今回はExcel VBAを使用して指定したフォルダ内のファイルを全て処理するマクロを紹介したいと思います。私自身マクロを作成するときにかなり使っているやり方になります。
Excelでデータ集計する時などに役立つと思いますので、是非参考にしていただければと思います!
以前、VBAを使用する為の事前準備の方法について紹介していますので、まだ準備が整っていない方は↑からご覧ください!
動作イメージ
先に動作イメージを紹介します。今回はとりあえずやり方の紹介になるので簡単なものになります。
「ファイル情報収集開始」ボタンを押すとC3セルに入力されているフォルダパス内のファイルから、ファイル名,ファイル作成日,ファイル更新日を取得してリストに表示するものになります。
![ファイル情報収集マクロ完成イメージ](https://masashi-blog418.com/wp-content/uploads/2022/04/image-45-1024x469.png)
今回は事前にフォルダ、ファイルを作成しておきました。ここはご自由に作成いただいて結構です!
![処理対象フォルダ、ファイル](https://masashi-blog418.com/wp-content/uploads/2022/04/image-46.png)
ボタンの設置,標準モジュールの追加
では、早速やっていきます。
が、その前にボタンの設置と標準モジュールの追加の説明をしておきます。
ボタンはマクロを実行する為に設置するのですが、標準モジュールはざっくりいうと
「マクロを動かす為のソースコード(命令)を書くところ」になります。今はとりあえずこんな認識でOKです。
1.ボタンの設置
「開発」タブ→「コントロール」内の「挿入」→「フォーム コントロール」内の「ボタン(フォーム コントロール)」をクリックします。
![ボタンの設置その1](https://masashi-blog418.com/wp-content/uploads/2022/04/image-47-1024x167.png)
![ボタンの設置その2](https://masashi-blog418.com/wp-content/uploads/2022/04/image-48.png)
そうするとカーソルが「+」になるので、シート上で適当な大きさにボタンを作成します。
作成すると、以下のようなダイアログが表示されます。ここにどのマクロを割り当てるか選ぶのですが、まだマクロはないので「新規作成」をクリックします。
![ボタンの設置その3](https://masashi-blog418.com/wp-content/uploads/2022/04/image-50.png)
すると、ボタンの設置が完了します。それと同時に標準モジュールが作成され、こんな感じの画面が表示されます。
この白い部分にソースコード(命令)を書いていきます。
![ボタンの設置その4](https://masashi-blog418.com/wp-content/uploads/2022/04/image-51-1024x345.png)
![](https://masashi-blog418.com/wp-content/uploads/2022/04/image0-scaled-e1649057046299.jpeg)
マクロの登録から新規作成すると標準モジュールが1つ追加されるイメージです。
2.標準モジュールの追加
ボタンの設置の段階で標準モジュールの追加ができてはいますが、別の方法も紹介しておきます。
「開発」タブ→「コード」内の「Visual Basic」をクリックします。
![標準モジュールの追加その1](https://masashi-blog418.com/wp-content/uploads/2022/04/image-52-1024x121.png)
すると、先程と同じ画面が表示されます。
![標準モジュールの追加その2](https://masashi-blog418.com/wp-content/uploads/2022/04/image-51-1024x345.png)
ソースコードの紹介
それでは、ソースコードの紹介です。
Sub FilePathList()
Dim FSO As Scripting.FileSystemObject
Dim Fld As Folder
Dim File As File
Dim Sht As Worksheet
Dim filepath As String
Dim i As Long
Application.ScreenUpdating = False
Set Sht = ThisWorkbook.Worksheets("ファイル名一覧")
Set FSO = New Scripting.FileSystemObject
With Sht
filepath = Sht.Range("C3")
Set Fld = FSO.GetFolder(filepath)
i = 1
For Each File In Fld.Files
.Range("B7").Offset(i, 0) = File.Name
.Range("C7").Offset(i, 0) = File.DateCreated
.Range("D7").Offset(i, 0) = File.DateLastModified
i = i + 1
Next
End With
MsgBox "完了しました。"
Set FSO = Nothing
Set Fld = Nothing
Set File = Nothing
Set Sht = Nothing
Application.ScreenUpdating = True
End Sub
初めて触る方は何書いてあるか分からないと思います(笑)
とりあえず上のコードを全部コピーし、先程の白い部分に貼り付けます。
![ソースコードの貼り付け](https://masashi-blog418.com/wp-content/uploads/2022/04/image-53-1024x824.png)
こんな感じですね。コードの解説についてはまたどこかで紹介しようかと思います。
貼り付けたら、赤枠内をクリックしてシートに戻ります。
マクロの登録
これでマクロの作成まで完了しました。ですが、このままだとボタンにマクロが登録されていないのでボタンにマクロを割り当てます。
先程設置したボタンを右クリックし、マクロの登録をクリックします。
![マクロの登録その1](https://masashi-blog418.com/wp-content/uploads/2022/04/image-54-1024x670.png)
すると、先程貼り付けた「FilePathList」が表示されているかと思います。
これを選択し、OKを押します。
![マクロの登録その2](https://masashi-blog418.com/wp-content/uploads/2022/04/image-55.png)
これでマクロの登録は完了です。
実際に動かしてみる
それでは、実際に動かしてみましょう。設置したボタンを押します。
![](https://masashi-blog418.com/wp-content/uploads/2022/04/image-57-1024x657.png)
![](https://masashi-blog418.com/wp-content/uploads/2022/04/image-58-1024x503.png)
「完了しました。」のダイアログが表示され、OKを押すとフォルダ内のファイル情報を表示させることができました!
まとめ
今回はフォルダ内のファイルを処理する方法について紹介しました。
応用が利く部分が多いので、是非カスタマイズして活用していただければと思います!
コメント