Excel VBA フォルダ容量検索マクロ(コピペで使える便利機能)

 

日常業務を行うにあたって、「あるフォルダ内にあるフォルダやファイルの容量を一発で知りたい。」

また、「そのフォルダにあるフォルダの数とファイルの数を一発で知りたい。」ということを思ったことはないでしょうか。

 

そんなとき、フォルダ容量やファイル数を一発で知ることができるツールがあったら良いなと思いませんか。

 

そこで、当エクセル(ツール)があるフォルダ同階層のフォルダ容量やファイル数を取得するマクロを作成しましたので、ご活用頂けたらと思います。

 

世の中にそれらの情報を調べることができるツールはいくつも存在していますが、そのような機能をマクロで実現してみました。

フォルダ容量検索マクロの概要

このエクセルがあるフォルダと同階層にあるファイルとフォルダの容量とフォルダの場合はその直下にあるファイル数やフォルダ数を教えてくれます。

 

Excelにてこの後に紹介するVBAコードを記載したマクロを作成し、ボタン(図形にて作成)をクリックしてマクロを実行させることでフォルダ容量等の情報を取得できます。

 

何ができるマクロなのか?

1.フォルダ容量検索マクロのVBAコードを含んだExcelファイル(***.xlsm)を作成して、調べたいフォルダに配置して、そのExcelファイルを開きます。

 

2.表示されたセルには記載せずに、図形を押してマクロを実行します。

 

3.マクロを含んだファイルが存在するフォルダと同階層のフォルダとファイルの情報を取得できます。

※ちなみに同階層にあるフォルダ/ファイルの中身は以下になります。

これのサイズ項目の括弧の中の数字がエクセル上に表示されていることが分かります。

 

フォルダ自動作成マクロの使用方法

1.Excelを開き、「開発」タブをクリックして、「Visial Basic」をクリックします。

 

2.「Microsoft Excel Object」にて右クリックして「標準モジュール」を挿入します。

 

3.右側の空欄スペースに下記のVBAコードをコピペで入力します。

 

VBAコードが以下になります、このコードを「module1」の欄にコピペしてください。


Option Explicit
Sub search_folder_size()
  
    On Error GoTo err
    Call initialize         '初期処理
    
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    Dim pfl As Folder                                   '親フォルダ
    Dim fl As Folder                                    '子フォルダ
    
    Set pfl = fso.GetFolder(ThisWorkbook.Path)          '親フォルダを取得
    
    Dim row As Long: row = 3
    Dim folderName As String
    Dim folderSize As String
    Dim folderCnt As Long
    Dim fileCnt As Long
    
    For Each fl In pfl.SubFolders                       'サブフォルダの一覧を取得
    
        On Error Resume Next
        
        folderName = fl.Name
        folderSize = fl.Size
        
        If err.Number <> 0 Then
            folderSize = "※2GB以上"
        Else
            If folderSize > 1000000 Then
                folderSize = Round(fl.Size / 1000000, 2) & " Mバイト"
            ElseIf folderSize > 1000 Then
                folderSize = Round(fl.Size / 1000, 2) & " Kバイト"
            Else
                folderSize = fl.Size & " バイト"
            End If
        End If
        
        folderCnt = fso.GetFolder(fl).SubFolders.Count
        fileCnt = fso.GetFolder(fl).Files.Count
        
        Cells(row, 1).Value = folderName
        Cells(row, 2).Value = folderSize
        Cells(row, 3).Value = folderCnt
        Cells(row, 4).Value = fileCnt
        
        row = row + 1
        
    Next
    
    Dim fileName As String
    Dim fileSize As String
    Dim f As file
    
    For Each f In pfl.Files     ' フォルダ内のファイルを取得
    
        fileName = f.Name
        
        If InStr(fileName, ThisWorkbook.Name) = 0 Then
            
            If f.Size > 1000000 Then
                fileSize = Round(f.Size / 1000000, 2) & " Mバイト"
            ElseIf f.Size > 1000 Then
                fileSize = Round(f.Size / 1000, 2) & " Kバイト"
            Else
                fileSize = f.Size & " バイト"
            End If
            
            Cells(row, 1).Value = fileName
            Cells(row, 2).Value = fileSize
            Cells(row, 3).Value = "-"
            Cells(row, 4).Value = "-"
            
            row = row + 1

        End If
    Next
 
    Set fso = Nothing
    Exit Sub
    
err:
    MsgBox "予期せぬエラーが発生しました"
    
End Sub

Sub initialize()

    Dim endRange As Range
    Set endRange = ActiveSheet.Range("A3").SpecialCells(xlLastCell)
    Range(Cells(3, 1), Cells(endRange.row, endRange.Column)).Clear
    
End Sub

 

4.ファイルを保存する際は「Excelマクロ有効ブック」を選択して、保存します。

 

5.Excelシートに戻り1行目は説明文となり、2行目はタイトル行となるので、ファイル/フォルダ情報はそこには入りません。

(タイトル行は、左から「フォルダ名またはファイル名」「サイズ」「フォルダ数」「ファイル数」となります。)

 

6.上部メニューの「挿入」タブ→「図形」→「四角形」を選択して、シート内に図形を作成します。

※図形のデザインはお好みで設定します。

 

7.6で作成した図形にメイン処理「search_folder_size」のマクロを設定します。

 

8.7でマクロ登録した図形にカーソルを当てて、指の形になっているのを確認してクリックします。

するとフォルダとファイル情報を取得できました。

 

また、このようなExcelVBAを用いた業務効率化を行うときに、以下の書籍が初心者向けでとても参考になると思いますので、良かったらご参照ください。

 

なお、当マクロの開発環境として、OSは “Windows10” 、Excelのバージョンは “Microsoft Office 365″ で行っており、当環境では動作確認ができていますが、他のすべての環境で正常に動作するかは確認できていません。

正常に動作しない場合は、コメントいただければ幸いです。

 

サンプルのダウンロードはこちら

 フォルダ容量検索マクロのツール本体

上記よりダウンロードして、VBAコードを組み込んでマクロを使用してください。
※マクロをインターネットからダウンロードするのはリスクを伴うと思いますので、マクロ入りでなくエクセル形式でアップロードしています。

あとは上のほうで書いたVBAコードを記載して.xlsm形式(マクロの形式)で保存したら動作すると思います。

 

Follow me!

コメントを残す

CAPTCHA