EXCEL VBA 業務効率化の秘訣、業務で活用できる便利な自動フォルダ生成テクニック3選(テクニック)

 

EXCEL VBA 業務効率化の秘訣、業務で活用できる便利な自動フォルダ生成テクニック3選(テクニック)

 

 

 ●はじめに

Excel VBAは、日々の事務作業を効率化する強力なツールです。特に、フォルダ作成という繰り返し発生するタスクを自動化することで、大幅な時間節約が可能になります。本記事では、Excel VBAを使用して指定された要件に基づくフォルダ作成スクリプトの作成方法を紹介します。このスクリプトは、指定されたパスにワークシートのデータを基にフォルダを作成し、ユーザーがフォルダの作成場所をダイアログボックスで選択できるように設計されています。また、既存の同名フォルダがある場合は新たに作成しないという賢い機能も備えています。この一連のプロセスは、プロジェクト管理、顧客管理、イベント計画、財務・会計文書の整理、人事・従業員管理など、ファイル管理にわたる業務に応用可能です。本記事では、このVBAコードを実務にどのように活用できるか、実用的な例を交えて解説していきます。自動化により、文書管理の効率化とデータ整理の一貫性を高め、業務の質を向上させる方法をご紹介します。

●【EXCEL VBA Dir関数(2)ファイル操作・フォルダー・サブフォルダー操作については、下記を参照して下さい】

EXCEL VBA Dir関数(2)・ファイル操作・フォルダー・サブフォルダー操作(ファイル存在・ファイル一覧)

●【MkDir ステートメント(Excel)、下記を参照して下さい。(Microsoft社 様)】
https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mkdir-statement

 

 

EXCEL VBA 指定した場所にフォルダーを自動生成① (EXCELシートに登録したフォルダー名を生成)

 

 

 ●プログラム説明 (サンプル①)

今回説明するプログラムは、Excelの特定のシートから読み取ったフォルダ名を使用して、ユーザーが選択した場所に新しいフォルダーを作成するプログラムです。既に同名のフォルダーが存在する場合は、そのフォルダーの作成をスキップします。それでは、順番に説明いたします。


【プログラムの流れ】

  1. Sheet1という名前のワークシートを取得します。
  2. ユーザーにフォルダーを作成する場所を選択させるダイアログボックスを表示します。
  3. 選択された場所のパスを取得します。
  4. ワークシートのA列からフォルダ名を読み取ります。
  5. 2行目から最後の行まで、各行のフォルダー名に対して以下の処理を実行します。
    ※フォルダ名ーが空でなく、既に同名のフォルダーが存在しない場合、その名前でフォルダーを作成します。

【プログラム実行条件・注意事項】

  1. ユーザーが正しい場所を選択していることを確認してください。
  2. Sheet1や列の指定は、実際のExcelファイルの構成に合わせて変更する必要があります。
  3. VBAでのフォルダー操作が許可されていることを確認してください。
  4. 同名のフォルダーが既に存在する場合、そのフォルダーは作成されません。

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● automatic_folder_creation01(サンプルプログラム)

 

 

 

 

●実行前~実行後 ※このプログラムを実行すると、ユーザーによって選択されたパスに新しいフォルダーが作成され、リストに含まれるが既に存在するフォルダー名はスキップされ、各行に記載されたフォルダー名に対して条件を満たした場合のみ新しいフォルダーが生成されます。
(画面クリックして拡大)

 

 

 

EXCEL VBA 指定したフォルダー名で指定した場所にフォルダー名でメインフォルダとサブフォルダーを自動生成②

 

 

 ●プログラム説明 (サンプル②)

今回説明するプログラムは、上記で説明したましたサンプルプログラム①の応用となります。今回のプログラムでは、EXCELシートに登録されているデータを元にメインフォルダーとサブフォルダーを作成します。具体的には、A列に登録されているデータは、メインフォルダー、その同行に登録されているB列のデータサブフォルダーとしてA列のメインフォルダー内にサブフォルダーが作成されます。なお、既に同名のフォルダが存在する場合は、そのフォルダの作成をスキップします。それでは、順番に説明いたします。

【プログラムの流れ】
1.ワークシートを設定:Sheet1を操作対象のシートとして設定します。
2.フォルダーの基本パスをユーザーが選択:ファイルダイアログを使用して、フォルダーを作成する基本パスをユーザーに選択させます。
3.最終行の取得:Sheet1のA列の最終行を取得します。
4.ループ処理:2行目から最終行まで、各行のA列(メインフォルダー名)とB列(サブフォルダー名)を読み取ります。
5.フォルダーの作成:メインフォルダがまだ存在しない場合、基本パスにメインフォルダーを作成します。続いて、同様にサブフォルダーが存在しない場合、メインフォルダ内にサブフォルダーを作成します。

【プログラム実行条件・注意事項】

1.フォルダー名の重複:既に同名のフォルダーが存在する場合、新たにフォルダーは作成されません。
2.エラーハンドリング:このコードにはエラーハンドリングが含まれていないため、予期せぬエラーが発生する可能性があります(例:アクセス権限の不足、無効なフォルダー名)。
3.ユーザーの操作:ユーザーがファイルーダイアログでキャンセルを選択すると、コードは何もせずに終了します。


★【サンプルプログラム】

下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● automatic_folder_creation02(サンプルプログラム)

 

 

 ●実行前~実行後 ※プログラム実行後、ダイアログボックスが表示されて、ユーザーがフォルダーを作成する場所を選択します。ワークシート「Sheet1」のA列に記載されたメインフォルダが作成され、それぞれのメインフォルダ内にB列に対応するサブフォルダが生成されますが、すでに存在するフォルダ名は新たには作成されません。
(画面クリックして拡大)

 

 

EXCEL VBA 指定したフォルダー名で指定場所にメインフォルダーと複数のサブフォルダーを自動生成③

 

 

 ●プログラム説明 (サンプル②)

今回説明するプログラムは、上記で説明したましたサンプルプログラム②の応用となります。今回のプログラムでは、EXCELシートに登録されているデータを元にメインフォルダーと複数のサブフォルダーを作成します。具体的には、A列に登録されているデータは、メインフォルダー、その同行に登録されているB列以降のデータサブフォルダーとしてA列のメインフォルダー内にサブフォルダーが作成されます。なお、既に同名のフォルダーが存在する場合は、そのフォルダーの作成をスキップします。それでは、順番に説明いたします。

【プログラムの流れ】
1.Sheet1という名前のワークシートを選択します。
2.ユーザーがフォルダーを作成する場所を選択できるように、ファイルダイアログを開きます。
3.選択されたパスをbasePath変数に格納します。
4.Sheet1のA列で最終行を検出します。
5.2行目から最終行まで各行をループ処理します。
6.各行のA列からメインフォルダー名を取得します。
7.メインフォルダーがまだ存在しない場合、それを作成します。
8.同じ行のB列以降のセルをループ処理し、サブフォルダー名を取得します。
9.各サブフォルダーがまだ存在しない場合、それを作成します。

【プログラム実行条件・注意事項】
1.ワークシートの名前がSheet1であることを確認する必要があります。
2.A列にメインフォルダー名、B列以降にサブフォルダー名が記載されている必要があります。
3.フォルダー名が空のセルは無視されます。
4.既に同名のフォルダーが存在する場合、新たに作成されません。
5.フォルダーの作成場所はユーザーがファイルダイアログで選択する必要があります。

【実行結果・例】
上記のフォルダーを作成する条件で実行すると、ユーザーが指定したパスに以下のフォルダ構造が作成されます(サンプルデータに基づく)

選択されたパス
・MainFolder1
・・・・SubFolder1-1
・・・・SubFolder1-2
・MainFolder2
・・・・SubFolder2-1
・・・・SubFolder2-2
・・・・SubFolder2-3
・・・・SubFolder2-4
・・・・SubFolder2-5
※MainFolder2まで再現しております。
既に存在するフォルダは作成されません。また、空のセルがあれば、その行のその部分についてはフォルダが作成されません。

 

★【サンプルプログラム】
下記のリンク先よりサンプルプログラムをダウンロードする事ができます。
● automatic_folder_creation03(サンプルプログラム)

 

 

 

 ●実行前~実行後 ※プログラム実行後、ダイアログボックスが表示されて、ユーザーがフォルダーを作成する場所を選択します。ワークシート「Sheet1」のA列に記載されたメインフォルダが作成され、それぞれのメインフォルダ内にB列以降複数登録したサブフォルダが生成されますが、すでに存在するフォルダ名は新たには作成されません。
(画面クリックして拡大)

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。