VBAを使うと、フォルダ操作を自動化することが可能です。
たとえば以下のような仕事を自動化できます。
・フォルダを自動作成(階層別に)
・フォルダ名やファイル名を取得してエクセルに書き出す(サブフォルダ含めて)
・フォルダ内のファイルやフォルダを開く
しかしながら上記のような作業が可能と言われても、イメージがわかない人もいるはずです。
そこで仕事で使える事例を使いながら紹介していきます。
目次
VBAでフォルダ操作するときの事前準備
エクセルVBAでフォルダを操作するためのプログラミングに入る前に、以下の事前準備が必要です。
・VBAの参照設定
以下で説明します。
VBAの参照設定とは
参照設定とは、機能拡張させることです。
このページで利用するプログラムの多くは、以下の参照設定を変更します。
「Microsoft Scripting Runtime」にチェックを入れることで、フォルダやファイルを操作できるようになります。
VBAの参照設定の方法
参照設定の方法は以下のページで紹介しています。
参照設定をしていないと、本事例で紹介している事例は動作しないことがあります。
そのため必ず参照設定を行っておく必要があります。
なお「Microsoft Scripting Runtime」が必ずしも必要というわけではありません。
それでも「Microsoft Scripting Runtime」を使用するほうが良いと考えています。その理由も含めて上記のページで紹介しています。
VBAでフォルダ操作を自動化する事例
このページでは以下の事例について紹介していきます。
1. フォルダ作成
2. フォルダ内のフォルダ名やファイル名を取得
3. フォルダを開く
4. フォルダ選択
5. フォルダ内のファイルを開く
6. フォルダパス取得
7. フォルダ存在チェック
8. フォルダ削除
9. フォルダコピー
10. 仕事での応用事例
以下で詳しく紹介していきます。
1. フォルダ作成
事例1. マクロVBAでセルの値(エクセル)で同じ階層に複数フォルダ一括作成
エクセルの一覧からフォルダを作成したいときがあります。
たとえば、フォルダをまとめて作りたい場合です。
しかしフォルダを一つずつ作成していると、フォルダ名を入力ミスしたり整合性のない名前を付けてしまったりします。
とくに作成するフォルダ数が増えるほど、面倒な作業になってしまいます。
このときVBAを使うと、エクセルの一覧からフォルダを自動で作成することができます。
そこでExcel×フォルダ操作のVBAサンプルを紹介します。
・エクセルファイル(サンプル)を無料ダウンロード
それでは以下で詳しく紹介していきます。
事例2. VBAで複数フォルダを階層別に一括作成|エクセルマクロ×フォルダ操作
作成したフォルダ数が5程度であれば、手入力で作成することでも問題ありません。
しかし作成したいフォルダ数が数10個以上作る場合、マクロを使った方が早いです。
実際マクロを使えば、10コでも100コでも自動で処理を行うことができます。また、フォルダ名を間違えずに作成することができます。
・VBAプログラム入りのエクセルファイルをダウンロード可能
このページでは、マクロで複数フォルダを階層別に作成するプログラムを紹介します。
またVBAプログラムが含まれたエクセルファイルをダウンロードすることもできるようにしていますので、興味がある人はご活用ください。
2. フォルダ内のフォルダ名やファイル名を取得
事例3. VBAでフォルダ内のファイル名を取得!再帰的に階層別にサブフォルダも対象にしてエクセルへ一覧を出力
VBAを使うとフォルダ内の全てフォルダやファイル名を取得して一覧にすることができます。
これは下位フォルダ(サブフォルダ)のファイルも含めて全て取得可能です。
今回は、フォルダ内の全てのファイル名を取得してエクセルへ出力するプログラムを紹介します。
・フォルダ階層ごとにExcelへ書き込む
それでは以下で詳しく紹介していきます。
事例4. VBAでフォルダ内のファイル名とサブフォルダを取得し一覧化|拡張子も出力する方法
フォルダ内のファイルやフォルダの名前をエクセルに書き出したいときがあります。
たとえば、フォルダに資料を集約した内容を取引先や別チームへ共有したい場合があります。
しかしフォルダ内のファイルやフォルダの名前を目視で確認しながらエクセルに書き出すと、作業に時間がかかってしまいます。
またミスタイプによって、誤った名前を相手に共有してしまうこともあります。
そのため単純作業にもかかわらず、負荷が大きくなってしまいます。
このときVBAを使うと、エクセルに自動で出力することができます。
そこでExcel×フォルダ操作のVBAサンプルを紹介します。
・エクセルファイル(サンプル)を無料ダウンロード
実際にどのようなことができるかは以下の動画で解説をしています。
それでは以下で詳しく紹介していきます。
事例5. VBAでサブフォルダ含めフォルダ名とファイル名をテキストファイル出力
VBAを使うとフォルダ内の全てフォルダやファイル名を取得して一覧にすることができます。
これは下位フォルダ(サブフォルダ)のファイルも含めて全て取得可能です。
実際、エクセルにフォルダ名とファイル名を取得するプログラムは以下のページで紹介しています。
しかしフォルダ名とファイル名をテキストファイルに書き出すことも可能です。
このページでは「VBA×フォルダファイル操作」の事例として、フォルダ名とファイル名をテキストファイルに書き出すVBAプログラムについて紹介します。
・VBAサンプルを無料ダウンロード
それでは以下で詳しく紹介していきます。
事例6. VBA×ファイル操作|フォルダ名とファイル名をテキストファイルへ出力
フォルダ内のファイルやフォルダ名を書き出したいときがあります。
このときVBAを使うと、フォルダ名とファイル名の一覧を入手することができます。
実際、エクセルにフォルダ名とファイル名を取得するプログラムは以下のページで紹介しています。
しかしフォルダ名とファイル名をテキストファイルに書き出すことも可能です。
そこでこのページではVBA×フォルダファイル操作の事例として、フォルダ名とファイル名をテキストファイルに書き出すVBAプログラムについて紹介します。
・VBAサンプルを無料ダウンロード
それでは以下で詳しく紹介していきます。
事例7. VBAでフォルダ内のフォルダ名・ファイル名を一括変更(まとめて変換)
フォルダ内のファイルやフォルダの名前を変更したいときがあります。
しかしファイルやフォルダの名前を手入力で修正すると、ミスタイプで誤ってしまう可能性があります。
また変更したいファイルやフォルダの数が多くなると、作業に手間がかかってしまいます。
そこでVBAでファイルやフォルダの名前を変更します。
VBAを使うと、エクセル上でフォルダ名とファイル名を一括変更可能です。
・エクセルファイル(サンプル)を無料ダウンロード
それでは以下で詳しく紹介していきます。
3. フォルダを開く
事例8. VBAでShellを使ってフォルダを開く|最前面に表示(アクティブ化)
VBAでフォルダを最前面に表示する方法を紹介します。
フォルダを最前面に表示するには、通常サイズと最大サイズを選択できます。
上記について、コード解説もしていきます。
4. フォルダ選択
事例9. VBAでダイアログからフォルダ選択し複数ファイル名を取得・表示|エクセルに一覧化
VBAを使うとダイアログからフォルダ選択して、そのフォルダに含まれるファイル名を取得することができます。
今回は、ダイアログで選択したフォルダ内のファイルをエクセルへ表示するプログラムを紹介します。
・ダイアログの選択をキャンセルしたらプログラムを終了
・VBA入りのエクセルファイルをダウンロード可能
それでは以下で詳しく紹介していきます。
5. フォルダ内のファイルを開く
事例10. VBAでフォルダ内のエクセルファイルを全てに処理するマクロを紹介
フォルダ内のすべてエクセルファイルに処理するVBAプログラムを紹介します。
このページでは、以下のフォルダ内のエクセルファイルに同じ処理を実行します。
フォルダ内の「Book1.xlsx~Book3.xlsx」の各エクセルのセルA1~セルA5に数値を入れます。
さて、このような作業は手作業でも可能です。
しかし、数が多くなればマクロを使った方がラクに仕事を終わらすことができます。
実際マクロを使えば、エクセルファイルが10コでも100コでも自動で処理を行うことができます。
そこで、マクロを使って処理する方法を紹介します。
事例11. VBAでフォルダ内の全てのエクセルデータを一つにまとめる(集約)
フォルダ内のエクセルデータを一つに集約にする作業があります。
このページでは、複数のエクセルファイルを一つに集約するVBAプログラムを紹介します。
・VBAプログラム入りのエクセルをダウンロード可能
ページ下部で紹介するVBAプログラムをダウンロードすることもできますので、ぜひお仕事にご活用ください。
事例12. エクセルVBA×Text|テキストファイルの文字列を一斉置換・変換
テキストファイル内の複数の文言を置換したいときがあります。
対象のテキストファイルが1つや2つであれば、置換作業もそこまで大変ではありません。
しかしテキストファイルが複数ある場合、手入力で置換作業を行うのは作業量が多くなり、入力ミスが発生するリスクも増えます。
そのため大量の処理を行う場合は、プログラムを使った方が早いです。
実際VBAを使えば、テキストファイルが10コでも100コでも自動で処理を行うことができます。
テキストファイルの文言をまとめて置換(エクセルのデータに基づき)
このページでは、VBAを使ったプログラムについて紹介します。
またVBAプログラムが含まれたエクセルファイルをダウンロードすることもできるようにしていますので、興味がある人はご活用ください。
事例13. マクロVBAでフォルダ名の先頭に連番を自動追加(一括で)
フォルダ名に連番を追加したいときがあります。
たとえば「01_フォルダA」、「02_フォルダB」、「03_フォルダC」というように、フォルダ名の先頭に「XXX_」を追加していくことです。
このとき手動で作業を行うと、ミスタイプによって誤った番号をフォルダ名に追加してしまうことがあります。
またフォルダ数が多いと、作業に時間がかかってしまいます。
このときVBAを使うと、自動でフォルダ名の先頭に連番を追加することができます。
そこでVBA×フォルダ操作のサンプルを紹介します。
・エクセルファイル(サンプル)を無料ダウンロード
それでは以下で詳しく紹介していきます。
7. フォルダ存在チェック
事例14. VBAでFSOを使ってフォルダ存在チェックしてフォルダ作成
VBAでフォルダの存在をチェックする場合、FSO(FileSystemObject)を使って「FolderExists(フォルダパス)」を使います。
このページでは、VBAでフォルダの存在チェックをした上で、フォルダを作成する方法を紹介します。
・VBAでフォルダ存在していなければフォルダを作成する
上記について、コード解説をしていきます。
事例15. VBAでフォルダ内のファイル数とフォルダ数をカウントしてExcelに出力
VBAを使うとフォルダ内のフォルダ数やファイル数をカウントすることができます。
今回は、フォルダ内のフォルダ件数やファイル件数を取得してエクセルへ出力するプログラムを紹介します。
・Excelへ個数を書き込む
それでは以下で詳しく紹介していきます。
8.フォルダ削除
事例16. VBAでフォルダ内のファイルや特定フォルダ(ファイルごと)一括削除
VBAを使うとフォルダ内の特定のフォルダやファイルを一括で削除することができます。
今回は特定のキーワードを含むフォルダとファイルを削除するVBAプログラムを紹介します。
・VBAプログラム入りのエクセルをダウンロード可能
それでは以下で詳しく紹介していきます。
9.フォルダをコピー
事例17. VBAで複数フォルダのセットを一括コピー(フォルダの名前変更も実行)
VBAを使うとフォルダをコピーすることが可能です。
このフォルダコピーを活用して、テンプレートとして事前に作成したフォルダセットをまとめて作成することができます。
たとえばプロジェクト始動時に、関連部署ごとにテンプレートフォルダをコピー可能です。
そうすることで、フォルダを作成する手間を省くことができます。
また事前にテンプレートのフォルダセットを作っておくことで、仕事の抜け漏れを減らすことも可能です。
今回はテンプレートとなるフォルダセットをまとめてコピーするVBAプログラムを紹介します。
・VBAプログラム入りのエクセルをダウンロード可能
それでは以下で詳しく紹介していきます。
10.仕事での応用事例
事例18. エクセルVBAで請求書PDF作成|複数の取引先別に自動転記(マクロテンプレートあり)
エクセルを使って請求書や見積書を手入力で作成している人は少なくありません。
このとき、膨大な量の請求書を手入力で作成するとなると、記載ミスを引き起こす可能性があります。また、量が多いために計算間違いをしたりしてしまうことがあります。
しかし、このようなミスはエクセルマクロVBAを活用することで大きく改善することができます。
そこで、請求書や見積書をエクセルマクロVBAで作成する方法を解説します。
・請求書はPDFとして作成し、所定フォルダへ保存
・請求書の締め日も調整可能(これは事前入力で対応)
・マクロ入りテンプレートダウンロード可能
このページで紹介しているマクロはダウンロード可能です。
ページ下部にフォームがありますので、ぜひお仕事でご活用ください。
事例19. エクセルマクロVBAで資料送付状(Word)の作成・印刷を効率化
取引先に資料送付状を作成して印刷する作業があります。
たとえば上記のような資料送付状の作成・印刷です。
この資料送付状を作成するためには、日付や取引先の入力が必要です。
取引先への資料のため、ミスがないように作成することが求められます。
しかし、どうしても入力ミスしたり記載が漏れたりしてしまうものです。
そこでマクロを使って、資料送付状の作成と印刷を効率化してみます。
・マクロで作成時間を短縮させる
・VBAプログラム入りのエクセルをダウンロード可能
ページ下部で、このページで紹介しているVBAプログラムをダウンロードすることもできますので、ぜひお仕事にご活用ください。
事例20. VBAでWord議事録メモを作成して最前面表示!ファイルコピーと一覧化で整理整頓
VBAを使って議事メモ作成を効率化するツールを紹介します。
議事メモの作成そのものを効率化するというよりは、議事メモのテンプレートをVBAで呼び出し、所定のフォルダに保管する作業をVBAで自動処理させます。
これにより、毎回同じフォーマットの議事メモのテンプレートを使用できること、後で議事メモをフォルダから探す手間が省くことができること、といった恩恵を受けることができます。
・ミーティングごとに議事メモの保管先を分ける
・VBA入りのエクセルファイルをダウンロード可能
それでは以下で詳しく紹介していきます。
VBA以外でフォルダ作業の効率化をする方法
本記事ではVBAでのフォルダ操作の自動化事例を紹介しました。
しかし実際の業務ではVBAばかり使うわけではありません。
むしろ手入力でいろいろ作業する頻度のほうが圧倒的に多いです。
そのためフォルダ操作をショートカットキーを覚えたり、作業効率化につながる設定を実践したりすることも非常に重要です。
以下のページでフォルダ作業のテクニックを紹介していますので、ぜひご覧ください。
Excel VBA以外の業務効率化の方法
本記事ではVBAによるフォルダ作業の効率化の事例を紹介しました。
しかし、別の方法もあります。
・GAS(Googleアプリ)による業務効率化
Pythonによる業務効率化
VBA以外にもPythonを活用した業務効率化があります。
Pythonのメリットは、VBAよりできることの幅が広い点です。
上記の記事では以下の点について紹介していきます。
2. PythonとVBAのプログラム
3. PythonとVBAの学習
4. PythonとVBAの転職
5. PythonとVBAの副業
Pythonで出来ることは以下の記事で詳しく紹介しています。
興味がある人は以下の記事もご覧ください。
GAS(Googleアプリ)による業務効率化
GoogleスプレッドシートやGmailの作業を自動化したい場合は、実際の業務ではGAS(Google Apps Script)を活用したほうが便利な場面があります。
たとえば私が実際にGASを活用して効率化してきた作業は以下の動画で解説しています。
動画を見てみると、あなたの仕事にどのようにGASを応用すればいいのかイメージが浮かぶこともあると思います。
さて上記の動画などを通じて、GASを使って何ができるのかを理解しておくことと実務の効率化に役立ちます。
なぜならGASの使い所を知っておくと、あなたの業務の何をGASで自動化できるかイメージを掴めるからです。
実際、仕事でどう活用するかをイメージしないまま学んでも、効果的な学習はできません。
以下の記事では、GASで出来ることだけではなく、プログラムソースも紹介しています。
興味がある人は以下の記事もご覧ください。
ぜひご覧ください。
GASの使い方・始め方を知らない場合はこちらがオススメ
VBAだけではなくGASも便利かもしれないと感じたのであれば、ぜひ以下の記事をご覧ください。
10分程度でGoogle Apps Scriptを使うためのスタート地点に立てるように解説をしています。
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
成長の過程は以下で紹介しています。
・こちら
学習の過程では、意識すべきポイントがあります。
特に独学の場合だと、勉強を優先してしまい、肝心な実践を疎かにしがちです。
私の経験では、実践から逆算した勉強が必要だと考えています。
目指すべきは会社でお金をもらいながら勉強することです。
要はVBAを仕事の一つとして上司に認めてもらうのです。
そうすればわざわざ高いお金を払って勉強をする必要がなくなります。
しかも作業を自動化して、会社やチームに貢献しつつ、自らのスキルアップできます。
そのために必要な考え方を以下で紹介しています。
・こちら
とはいえ、プログラミング初心者でVBAについて知識ゼロの人もいるはずです。
いきなり会社でVBAで使うことさえ、とてつもなくハードルが高く見えてしまうものです。
その場合は、VBAの基本について学ぶ必要があります。
たとえば車の運転も慣れてしまえば、たいしたことではありません。
しかし教習所で運転の基本を学び、免許を取得することで、公道で運転できるようになります。
VBAも同じです。VBAに免許はありませんが、まずは基本を学ばないことには会社で使えるレベルにはなりません。
実際に私もプログラミング初心者のときは、動画を見たり書籍を読んだりして勉強しました。
今はオンラインの教材で無料で学習できるものも多いです。
[https://www.fastclassinfo.com/entry/online_studies:embed:cite]
上記のリンクでは、私の経験から勉強にオススメの教材を紹介しています。
興味がある人はご覧ください。
VBAを自分で書けるようになる
さて、本記事で紹介したマクロを利用すれば、作業の自動化が可能になります。
しかしデメリットもあります。それはカスタムできないことです。
なぜなら、色々な要望が増えるからです。
この動画を見たとき、「もっと○○ができるのでは?」や「ここはなんとかならないのか」と感じる人は少なくないはずです。
例えば、「他の条件を付け加えたい」や「日付毎に条件を変えたい」といった要望が出るかもしれません。
このような要望を満たすには、マクロを勉強して自力でマクロを編集できるようになる必要があります。
もし、自力でマクロを編集できるようになれば、今より仕事の効率はグッと上がります。
実際、私も自力でマクロを書けるようになってからは、仕事の生産性が一気に上がりました。
他の人が30分~1時間かけて行う仕事が、ボタン一つで終わらせることができるようになったのです。
その結果、周囲からの信頼も増し、仕事で高い評価を得られるようになりました。
ただ、要望に応えるようになるためには、マクロを学ぶ必要があります。
まずは無料でマクロを勉強してみる
ウェブや書籍で勉強すれば、マクロを習得できると考えている人は少なくありません。
しかし、仕事で使えるマクロを習得したいなら、仕事で使える部分に特化した教材で学ぶことをお勧めします。
なぜなら、ウェブや書籍には仕事に関係しない部分まで提供していることが多いからです。
例えば、マクロ初心者なのに配列を学ぼうとする人がいます。実は配列なしでも仕事で使えるマクロを書くことは可能です。
しかし、マクロ初心者ほど「全ての知識が必要だ」と考えて、無駄な学習に時間を使ってしまうのです。詳しくは、こちらの記事で紹介しています。
[https://www.fastclassinfo.com/entry/not_all_of_macro_information_is_necessary:embed:cite]
[https://www.fastclassinfo.com/entry/difficulty_of_vba_study_by_yourself:embed:cite]
そこで、私がお勧めするのは仕事に直結するマクロ教材です。とくにお勧めするのは、こちらの無料オンライン動画です。
なぜなら、仕事に直結する部分に絞って、エクセルマクロを学ぶことができるからです。
マクロの作り方・考え方から解説しているので、教材をしっかり学べばここで紹介したマクロをゼロから書けるようになります。
マクロ初心者が、仕事に直結したいマクロを学ぶなら、まずはこちらの無料オンライン動画を試すのがいいです。
興味がある人は、まずは無料でエクセルマクロの勉強を始めてみてください。
もっと学びたいと感じたら、さらに深く勉強をしてみることをお勧めします。