フォルダー内の全てのフォルダ・ファイルを取得 応用編

今回は応用編です。

今回は、前回作成した「Folder Navigator.xlsm」の応用編です。前回も説明した内容ですが、このマクロには、2つの使い方があるります。1つは、エクセルのワークシートに特定のファルダ内のサブフォルダ・ファイルの一覧を、リスト・ツリー構造で取得する。もう一つは、ほかのマクロ内に仕込んで、特定のフォルダ内の全てのファイルに対して処理を行う。この2つです。今回は、2番目のほかのマクロに仕込み活用するものを紹介いたします。

「ほかのマクロ内に仕込む」とは?

エクセルのファイルごとほかのマクロ内に入れるのではありません。今回の場合は、再帰処理を使用しているために、コード本体(FNavi)を呼び出すプロシージャ(Call_FNavi)が存在しています。つまり、Call_FNavi内にFNaviを呼び出すコードがあり、FNaviの中にも、再帰処理のためにFNaviを呼び出すコードがあります。なので、この、マクロを使いたいExcelの中に、Call_FNaviとFNaviのコードをそのまま、貼り付けて、使用するほかのマクロからCall_FNaviを呼び出してやるといった感じになります。今回は作成するマクロの中に、コードを包含する方法をとりますが、現実的には、コードの改変等で処理が変われば、一か所のコードを変更すればOKですので、パーソナルマクロブックに保存して呼び出すのがいいでしょう。わかりにくければ、「ふ~ん」で読み飛ばしてください。

今回やっていること

1.リストに基づきフォルダの作成
2.作成したフォルダのリストをフルパスで取得
3.作成したフォルダの中に「Sales Report」のファイルを作成
4.「Sales Report」のファイルのリストをフルパスで取得
5.すべての「Sales Report」の内容を取得し、「AggregateReport」シートへ貼り付ける

といった内容です。以下のような業務を想定しています。月末に、翌月の人員体制に基づいた、フォルダを作成し、そのフォルダ内へメンバーごとに「Sales Report」を作成する。翌月末に、各メンバーが作成した「Sales Report」を集約する。
フォルダを作ったりその中にファイルを作ることも大変ですが、メンバーごとのファイルをすべて開いて確認して集約することも大変です。今回の場合、150名のメンバーを想定しています。一つのファイルの処理に5分かかるとすると、5×150=750分・・・12時間30分かかります。まあ、2日間の作業です。電話応対など、ほかの業務と並行して進めるとすれば、3~4日かかっても不思議ではありません。今回の場合は、単純にシートのコピペですが、取得した値を計算するなどの処理をする場合には、正確性の問題も発生し、確認も含めると1営業週かかっても不思議ではないでしょう。件数が少なくてもインセンティブにかかわるような集計になれば、時間に追われる中で正確さが問われ、担当者の心理的負担は、かなりのものになります。これを、VBAで解決しましょうというわけです。
まあ、「Excelで営業日報を作成しているのはどうなのか問題」は、横に置いときましょう。

ダウンロードして動かしてみてください。

ダウンロードしたExcelを開くとフォームが開きます。
1.「フォルダの作成」
2.「フォルダリスト取得」
3.「Report作成」
4.「Reportリスト取得」
5.「全てのレポートからデータを取得」
6.「フォームを閉じる」
の6個のボタンがあります。最初は、1と6のボタンだけ見えていますが、1~5のボタンは、それぞれ順番に表示非表示がなされます。フォルダはExcelブックの保存したフォルダに「Test」のフォルダを作りその中にリストに基づいたフォルダを作ります。フォルダを作る。レポートを作る。すべてのレポートの中身を参照してリスト化する。応用は、無限大です。こんな風に使いたいのだが、とか、ご連絡いただけるとご希望のVBAの作成が可能です。

※マクロが使用できないなど、うまく動かない場合は、Googleで検索してみてください。
※マクロには保護をかけてあります。
※ダウンロード・ご利用に際しては、「ご利用に関して」をご理解の上、自己責任といたします。

VBA
シェアする
masahiroをフォローする
VBAで手作業よ、さようなら!

コメント

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