【EXCEL:VBA】各フォルダのサイズを一覧化したい(簡単3ステップ)

指定したフォルダ配下のフォルダサイズを調べたい

この記事では、EXCELで指定されたフォルダの下に作成されているフォルダのサイズを調べて一覧化する方法について説明しています。

 

VBAを利用してフォルダサイズを調べることができるので、簡単にすべてのフォルダサイズを把握することができます。

 

 

しかも、フォルダ階層もVBAが勝手に調べてくれます。

 

 

それでは、EXCELで指定したフォルダ配下のフォルダサイズを調べる機能を作成していきましょう。

 

困っている女性

大量に作成されているフォルダのサイズを調べるが地味に大変なの・・・、わかる!?

困っている女性

仕事でいろいろファイルを作成したり、ネットから資料をダウンロードしたりして、ハードディスク容量がどんどん少なくなってくるの。

困っている女性

そういう時に、各フォルダのサイズを調べて、減らせるものがないか調べる作業が大変なの・・・。
それなら、VBAを使えばボタン1つ押すだけで、大量のフォルダそれぞれのサイズを簡単に調べることができるよ。

解決する男性

トップ階層のフォルダを指定すれば、そのフォルダ配下に存在する各フォルダのサイズを一気に調べれるよ。

解決する男性

困っている女性

それそれ、早く教えてよ。

 

◆似たような作業で、ファイル一覧を取得する方法については、以下の記事を参照してください。

指定したフォルダに存在するファイル一覧を取得する 【EXCEL:VBA】指定したフォルダに存在するファイル一覧を取得したい

 

◆他には、指定したフォルダ階層を一気に作成する方法については、以下の記事を参照してください。

指定したフォルダを作成したい 【EXCEL:VBA】一括で大量にフォルダを作成したい

 

フォルダサイズを一気に調べる機能を、1つ1つ順番に説明していきます。

【ステップ1】ベースフォルダ指定欄、フォルダリスト表示欄を準備する

まず、ベースとなるフォルダを指定する欄とそのベースフォルダ配下のフォルダリストを表示させる欄を作成します。

「フォルダサイズ」シートを作成する

フォルダサイズシートを作成する

フォルダサイズシートを作成する

 

  1. 「フォルダサイズ」という名前のシートを作成します。
  2. 1行目に「ベースフォルダ」のタイトル行を作成します。
  3. 2行目に「ベースフォルダ」を入力する欄を作成します。
  4. 3行目に「No」、「フォルダ名」、「サイズ(バイト)」、「サイズ(MB)」のタイトル行を作成します。
  5. 4行目以降は、調べたフォルダリストを書き込む欄になります。

 

4行目以降の「No」、「フォルダ名」、「サイズ(バイト)」、「サイズ(MB)」はVBAプログラムが記入してくれます。

 

【ステップ2】必要なライブラリ「Microsoft Scripting Runtime」の参照設定をする

開発タブの「Visual Basic」をクリックして、「Microsoft Visual Basic for Applications」を起動します。

Microsoft Visual Basic for Applicationsを起動する

Microsoft Visual Basic for Applicationsを起動する

 

「ツール」の「参照設定」をクリックして、参照設定ダイアログを開きます。

参照設定ダイアログを開く

参照設定ダイアログを開く

 

「Microsoft Scripting Runtime」を一覧から探し、チェックをつけて、OKボタンを押します。

Microsoft Scripting Runtimeを有効にする

Microsoft Scripting Runtimeを有効にする

 

【ステップ3】VBAでフォルダサイズを調べる機能を記入する

「Microsoft Visual Basic for Applications」にVBAプログラムを入力します。

VBAプログラムを記入する

VBAプログラムを記入する

 

標準モジュールを追加して、以下のソースを書きます。

 

続いて、次のVBAプログラムも記入します。

VBAプログラムを記入する(その2)

VBAプログラムを記入する(その2)

 

以下のソースも書きます。

 

最後にEXCELを「◯◯◯.xlsm」というような感じでマクロ有効ブック形式で保存します。

 

フォルダサイズを調べる機能の使い方

それでは、フォルダサイズを調べる方法を説明します。

 

まず、A2セルにベースとなるフォルダパスを入力します。

 

次に、「開発」タブの「マクロ」をクリックします。

VBAプログラムを実行する

VBAプログラムを実行する

 

先程作成した自作関数「MainProc」が一覧に表示されていますので、選択します。

次に、「実行」ボタンをクリックしてフォルダを作成します。

実行ボタンをクリックする

実行ボタンをクリックする

 

しばらく待つと、指定したフォルダ配下に存在するフォルダ全てのフォルダサイズが4行目以降に書かれます。

フォルダサイズを調べる機能を動かした結果

フォルダサイズを調べる機能を動かした結果

B列には、調べたフォルダパスが書かれます。

C列には、フォルダサイズをバイト単位で書かれます。

D列には、フォルダサイズをメガバイト(MB)単位で書かれます。

 

ちなみに、実際のフォルダは以下のようになっています。

実際のフォルダ階層

実際のフォルダ階層

 

フォルダサイズを調べるVBAプログラム(MainProc)の説明

それでは、VBAプログラム(MainProc)を説明します。

①参照するシートを変数に格納する

ここでは、このあとの処理で何度も使う「フォルダサイズ」シートを変数に格納しています。

そうすることにより、入力するプログラムを短くすることができるからです。

何度も「ThisWorkbook.Sheets(“フォルダサイズ”)」と入力するより、「sht」と入力するほうが少なくてすむからです。

 

②ベースフォルダを変数に格納する

ここでは、A2セルに入力されているベースフォルダを変数に格納しています。

このあとの処理で、何度もベースフォルダを使うからです。

 

③FileSystemObjectを変数に格納する

ここでは、「FileSystemObject」オブジェクトを変数に格納して、このあとの処理で利用できるようにします。

「FileSystemObject」はファイル操作やフォルダ操作をVBAで行うときに大変お世話になる便利なライブラリです、覚えておくと良いです。

 

④指定したフォルダ配下のサイズを調べる

ここでは、このあとで説明する自作関数「WriteFolderSize」を呼んでいます。

この自作関数は、指定したフォルダ配下の各フォルダのサイズを調べ、調べた結果をEXCELに書き込む機能になっています。

 

⑤FileSystemObjectをクリアする

ここでは、これまで使ってきた「FileSystemObject」をクリアしています。

 

フォルダサイズを調べるVBAプログラム(WriteFolderSize)の説明

それでは、VBAプログラム(WriteFolderSize)を説明します。

①フォルダオブジェクトを取得する

ここでは、指定されたフォルダパスからフォルダオブジェクトを取得しています。

フォルダオブジェクトを取得し、フォルダ操作を行うからです。

 

②サブフォルダオブジェクトを取得する

ここでは、指定されたフォルダ配下のサブフォルダたちを取得しています。

指定されたフォルダ配下のフォルダのサイズを調べるためです。

 

③各フォルダのサイズを調べ、EXCELに書き込みする

ここでは、「For Each」を利用して、サブフォルダを1つずつ取り出し、全てのフォルダに対してそれ以降の処理(③から⑦)を繰り返します。

 

③では、「フォルダサイズ」シートの「No」列に1からの連番を書き込みしています。

 

④では、「フォルダ名」列にサブフォルダパスを書き込みします。

 

⑤では、「フォルダサイズ(バイト)」列にサブフォルダのフォルダサイズをバイト単位で書き込みしています。

 

⑥では、「フォルダサイズ(MB)」列にサブフォルダのフォルダサイズをメガバイト単位で書き込みしています。
バイトを1024で割っているのは、1キロバイト(KB)は1024バイトだからです。
さらに1024で割っているのは、1メガバイト(MB)は1024バイト×1024バイトだからです。

「WorksheetFunction.RoundDown」は、EXCEL関数の「RoundDown」(切り捨て)を呼び出しています。

小数点第3位以下の値を切り捨てしています。

 

⑦ではこの機能の肝となる部分です。
「WriteFolderSize」関数内で「WriteFolderSize」を呼んでいます。
つまり、自分自身から自分自身を呼んでいます。

これを「再帰呼び出し」といいます。

 

具体的には、現在のフォルダのサブフォルダを対象にフォルダサイズを調べるように指示を出しています。

そのサブフォルダの処理から、さらに「WriteFolderSize」が呼ばれることになります。

サブフォルダがなくなるまで、再帰的に処理が繰り返されます。

 

結果として、指定されたフォルダ配下の全てのサブフォルダを対象に、フォルダサイズを調べることができるようになります。

 

 

それでは、フォルダサイズを調べるツールを作って、作業を効率化しましょう。

 

以上です。

 

 

最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です