【Excel VBA】指定したフォルダ内のファイルを全て処理する方法

Excel
スポンサーリンク

今回はExcel VBAを使用して指定したフォルダ内のファイルを全て処理するマクロを紹介したいと思います。私自身マクロを作成するときにかなり使っているやり方になります。

Excelでデータ集計する時などに役立つと思いますので、是非参考にしていただければと思います!

以前、VBAを使用する為の事前準備の方法について紹介していますので、まだ準備が整っていない方は↑からご覧ください!

スポンサーリンク

動作イメージ

先に動作イメージを紹介します。今回はとりあえずやり方の紹介になるので簡単なものになります。

ファイル情報収集開始」ボタンを押すとC3セルに入力されているフォルダパス内のファイルから、ファイル名,ファイル作成日,ファイル更新日を取得してリストに表示するものになります。

ファイル情報収集マクロ完成イメージ

今回は事前にフォルダ、ファイルを作成しておきました。ここはご自由に作成いただいて結構です!

処理対象フォルダ、ファイル
スポンサーリンク

ボタンの設置,標準モジュールの追加

では、早速やっていきます。

が、その前にボタンの設置と標準モジュールの追加の説明をしておきます。

ボタンはマクロを実行する為に設置するのですが、標準モジュールはざっくりいうと

マクロを動かす為のソースコード(命令)を書くところ」になります。今はとりあえずこんな認識でOKです。

1.ボタンの設置

開発」タブ→「コントロール」内の「挿入」→「フォーム コントロール」内の「ボタン(フォーム コントロール)」をクリックします。

ボタンの設置その1
ボタンの設置その2

そうするとカーソルが「+」になるので、シート上で適当な大きさにボタンを作成します。

作成すると、以下のようなダイアログが表示されます。ここにどのマクロを割り当てるか選ぶのですが、まだマクロはないので「新規作成」をクリックします。

ボタンの設置その3

すると、ボタンの設置が完了します。それと同時に標準モジュールが作成され、こんな感じの画面が表示されます。

この白い部分にソースコード(命令)を書いていきます。

ボタンの設置その4

マクロの登録から新規作成すると標準モジュールが1つ追加されるイメージです。

2.標準モジュールの追加

ボタンの設置の段階で標準モジュールの追加ができてはいますが、別の方法も紹介しておきます。

開発」タブ→「コード」内の「Visual Basic」をクリックします。

標準モジュールの追加その1

すると、先程と同じ画面が表示されます。

標準モジュールの追加その2
スポンサーリンク

ソースコードの紹介

それでは、ソースコードの紹介です。


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

初めて触る方は何書いてあるか分からないと思います(笑)

とりあえず上のコードを全部コピーし、先程の白い部分に貼り付けます。

ソースコードの貼り付け

こんな感じですね。コードの解説についてはまたどこかで紹介しようかと思います。

貼り付けたら、赤枠内をクリックしてシートに戻ります。

マクロの登録

これでマクロの作成まで完了しました。ですが、このままだとボタンにマクロが登録されていないのでボタンにマクロを割り当てます。

先程設置したボタンを右クリックし、マクロの登録をクリックします。

マクロの登録その1

すると、先程貼り付けた「FilePathList」が表示されているかと思います。

これを選択し、OKを押します。

マクロの登録その2

これでマクロの登録は完了です。

実際に動かしてみる

それでは、実際に動かしてみましょう。設置したボタンを押します。

「完了しました。」のダイアログが表示され、OKを押すとフォルダ内のファイル情報を表示させることができました!

まとめ

今回はフォルダ内のファイルを処理する方法について紹介しました。

応用が利く部分が多いので、是非カスタマイズして活用していただければと思います!

コメント

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