Excel マクロでフォルダサイズをグラフ化!【Excel Vba】

はじめに

Windows パソコンで「空き容量が不足しています」といったメッセージが表示されたとき「どのフォルダが大きいのだろう?」と悩んだことはありませんか?

エクスプローラーで見てみてもフォルダのサイズが表示されないんです。

 

フォルダサイズがぱっとパっとわかるようにしたい」そんな時は Excel マクロです。

Excel マクロをつかえば、自分で指定したパスのフォルダサイズの一覧をファイル名 + ファイルサイズで取得し、そのデータをもとにグラフ化できます。

 

この記事では、実際に私が作成したフォルダサイズの一覧表を算出しそのデータをもとにグラフ化する Excel マクロの作成方法(シート構成 + ソースコード)についてご紹介します。

 

※ 2019/10/17 時点でバージョンアップしました!!!

 

バージョンアップ内容
  1. 入力済みの値とグラフの削除
  2. フォルダパスを入力ダイアログから指定
  3. フォルダサイズ取得時にエラーが発生した場合、空白で出力
  4. その他(タイトル、ボタン等の追加)

 

スポンサーリンク

フォルダサイズをグラフ化するマクロ

 

今回作成する Excel マクロは下記のような動作を行います。

 

動作概要
  1. マクロの実行ボタンを押します。
  2. ダイアログ画面を表示させ、フォルダサイズ一覧を表示させるフォルダを選択します。
  3. シートにフォルダサイズ一覧とグラフが表示されます。

 

 

作成方法

 

(1)Excel のシートを以下のようなレイアウトを作成します。

※ 表のレイアウトについてですが、一行目の A 列、B列に下記画面のように表のヘッダー名を入力してください。

 

 

(2)VBA の編集画面(赤枠の箇所)に次の全てコードをコピーして貼り付けます

※ VBA の編集画面の表示方法がわからない場合は、下記リンクを見てください。

 

※ コードの詳細について後で(このページのこちらから)説明します。

コピーした内容を貼り付ける箇所 

コピーするソースコード

 

(3)上記のマクロをボタン化します(マクロ名 : 「main」、ボタン名はなんでもOK!)

 

 

※ マクロをボタン化する方法は、下記リンクを参考ください。

ソースコード詳細

 

今回作成したマクロは主に3つの関数(Sub プロシージャ)から構成されています。

この章で、定数の定義と下記の関数について説明します。

 

構成
  1. メイン関数(下記2つの処理を含む関数)
  2. ファイル名を取得するダイアログを表示させる関数
  3. フォルダ名からグラフ出力する関数

 

定数の定義

 

グラフの表示項目について定義します。

 

  • GRAPH_TITLE  : グラフのタイトル名
  • LABEL_X,LABEL_Y : X軸とY軸のラベル名
  • GRAPH_PLACE : 表の位置

 

 

メイン関数

 

メイン関数内では、2つの処理を行います。

 

  1. ダイアログからフォルダ名取得し fname という変数に代入(ダイアログから取得したフォルダ名)
  2. 取得したフォルダ名 fname からフォルダ内のファイルサイズを取得しグラフ化

 

 

ファイル名を取得するダイアログを表示させる関数

 

Application.FIleDialog から フォルダ名を取得します。

今回は「キャンセル」ボタンが押されたときは何も処理していません。

 

 

フォルダ名からグラフ出力する関数

 

長いので分けて説明します。

(本当はプロシージャ内のコードは 20行に抑えたかったのですが、長くなってしまいすみません)。

 

まず、フォルダ内の情報(フォルダ名、フォルダサイズ)を取得します。

そしてその情報を A列にフォルダ名、B列からフォルダサイズを順に出力させます。

 

 

グラフを棒グラフとして出力させるように設定します(xlColumnClustered)。

グラフにはタイトル名と軸ラベル付きで表示させるようにしています。

 

A列、B列で出力させた値をグラフにします。A列 → X 軸 、B列 → Y軸 に表示させます。

下記、4行目の getMaxRow は引数を列番号とし、その列番号から最大行番号を取得するプロシージャです。

 

 

グラフの位置とサイズについて指定します。

今回はグラフの位置をセル番号D4(定数 : GRAPH_LABELとして定義済み)に表示しています。

 

 

以下は私がよく使う便利プロシージャです。

いいなと思いましたら是非参考にしてみてください。

 

  1. getMaxRow : ある列の最終行番号を取得(引数は列番号)
  2. convertAToNum : 列番号のアルファ別途変換をします(例 列番号A → 1 に変換)

 

 

最後に

 

いかがでしたでしょうか?

コマンドプロンプトでもフォルダ内のサイズはわかるんですが、グラフ化することで一目でわかるようにしたく今回作成しました。

もし作成した Excel マクロが欲しい方は下記ボタンからダウンロードください。

 

スポンサーリンク
おすすめの記事