VBA・マクロツール

複数ファイルを指定したフォルダに自動で振り分けるツール(Microsoft Excel)

 

本記事では、最も有名でかつ使用頻度が高い表計算ソフトの「Microoft Excel」で使用できる『複数ファイルを指定したフォルダに振り分けるマクロ』ツールの概要・使い方・取得方法等を紹介しております。

 

日常業務を行うにあたって、たくさんあるファイルをいくつかのフォルダへ自動で簡単に振り分けたいと思うこともある良いと思います。

 

その際にエクセルの表で記載したフォルダパスへファイルを自動で振り分ける場合は以下のような作業を行っていないでしょうか。

  1. ファイルが存在するフォルダに移動する。
  2. 対象のファイルを切り取り(Ctrl+X)をする。
  3. 移動させたい先のフォルダに移動する。
  4. フォルダ内で貼り付け(Ctrl+V)をする。

上記の作業を、例えば色々なフォルダ内に散らばって存在するファイルを移動させたい場合は、これらの作業を何度も行う必要があります。

このような大変な作業を自分の時間を削って、何度も何度も繰り返し行っていては、時間が非常にもったいないです。

 

そんな場面で、無駄な作業が効率化できる、振り分けるファイル(またはフォルダ)と振り分け先のフォルダを階層ごとに指定して一度に振り分ける『ファイル自動振り分けマクロツール』をExcel VBAで作りました。(※他の記事を見て頂いた方から作成の要望コメントを頂きました。)

 

当記事にはマクロの元になるExcelファイルがダウンロード可能で、VBAのコードも記事内に記載がありますので、Excel VBAやマクロが良く分からないという方でもすぐに使用できます

 

なお、このファイル自動振り分けマクロツールは、必要に応じて『フォルダ自動作成ツール』を用いて振り分けるフォルダを自動生成した後に使用すると効率化が図れると思います

複数のフォルダを階層指定して作成するツール(Microsoft Excel) 本記事では、最も有名でかつ使用頻度が高い表計算ソフトの「Microoft Excel」で使用できる『複数フォルダを階層指定して作...

 

ツールの更新履歴

(2022年5月12日:更新)

・設定として、「対象をフォルダ/ファイルにするか」と「振り分けた後のファイル等を削除するか」を指定できるように変更しました。また、ツールの説明文を1行目に追加、ツールの全体構成の変更、フォルダ名称入力時に同一行をグレーアウトする仕様に変更しました。

(2022年9月19日:更新)

・振り分けるファイル/フォルダの指定にワイルドカードを使用できるように変更しました。それに伴い指定するファイルは拡張子まで記載するように仕様を変更しました。

(2022年9月30日:更新)

・同一名称のファイルが存在する場合に、当該ファイル/フォルダの処理をスキップするか、上書き保存するかを選択できるようにする仕様へ変更しました。
・全体のUIを変更しました。

(2022年12月4日:更新)

・ツール実行時の振り分け先フォルダを選択できるように変更しました。

(2023年8月24日:更新)

・同一名称のファイル/フォルダが存在した場合に別名(ファイル名の最後に日時を追加)で保存できるように変更しました。

 

ファイル自動振り分けマクロの概要

本ツールは、Excel内にあります表内に「振り分け先のフォルダ名」と、「振り分けるファイル名(またはフォルダ名)」を記入してマクロを実行すると、指定した階層のフォルダにファイル(またはフォルダ)が自動で振り分けられるツールとなっています。

その際に、振り分けた後の元ファイル等を残すか消すかなどを状況に応じて選択することができます。

 

本ツールでできること

  • 一か所にあるファイルを指定したフォルダにクリック一つで振り分けることができます。
  • 複数階層にまたがるフォルダに対してもファイルを振り分けることができます。
  • 振り分けるものはファイルとフォルダのどちらでも可能です。

 

下に説明動画を載せますので、ご確認ください。

説明動画

 

本ツールの利用手順

本ツールを使用する手順は以下の通りになります。

Step1:本ツール(Excelマクロファイル)を開く

  1. ファイル自動振り分けツールのVBAコードを含んだExcelファイル(***.xlsm)を任意のフォルダに保存して、そのExcelファイルを開きます。

Step2:フォルダ名と振り分けるファイル名をそれぞれ入力する

  1. 開いたExcelファイルに振り分け先フォルダ名と振り分けるファイル名(またはフォルダ名)を記載します。
  2. 「ファイル振り分け実行」ボタンをクリックします。

※当ツールが存在するフォルダの階層は、一番左の列(B列)の「格納先フォルダ」と同階層となります

Step3:振り分けファイルが入っているフォルダをダイアログ内で選択する

  1. 表示されたダイアログで振り分けるファイルが格納されたフォルダを指定します

正常に実行された場合は、その旨のメッセージが表示されます。

 

正常に実行された場合は、上記で指定した「振り分け先フォルダ」へ指定した「ファイル」が振り分けられています。

※振り分けたファイルを元々格納されていたフォルダ内から削除するかどうかはオプションで選択できます。

 

ツールより下の階層にあるフォルダにも同じくファイルが振り分けられました。

 

更に下の階層にあるフォルダにもワイルドカードを使用した指定したファイルやフォルダが振り分けられました。

 

Option1:ツール実行時の振り分け対象を指定

対象を「ファイルのみ」、「フォルダのみ」、「ファイルとフォルダ」の中から選択できます。

Option2:振り分け実行後の元ファイルを削除するかを指定

振り分け元にある振り分け前のファイルをツール実行後に削除するかを選択できます。

Option3:同一名称のファイルが既に存在する場合の処理を指定

同一ファイルに対して、スキップするか上書き保存するか選択できます。

 

振り分け先フォルダを指定可能

「振り分け先パス」の右にあるセルをダブルクリックして表示されたダイアログより振り分け先パスを指定できます。

※セル内に値がない場合は、ツールと同階層を対象にして動作します。

 

ワイルドカードが使用可能

振り分ける先の「ファイル/フォルダ」にはワイルドカード(*、?など)を使用できます

 

留意事項

フォルダ名称の記載箇所ルール

「格納先フォルダ」の記載箇所等に関しては、「フォルダ自動作成ツール」のルールと同様です。

※当マクロにはフォルダを自動生成する機能はありませんので、ファイル振り分けをする前にフォルダを作成する場合は、「フォルダ自動作成ツール」を実行してから当ツールを利用ください。

 

フォルダ名称とファイル名称を正しいセル位置にそれぞれ記載する

(注意)「格納先フォルダ」と記載された列にはフォルダ名称を記入し、「ファイル/フォルダ」と記載された列には、振り分けるファイル名称またはフォルダ名称を記入してください。

また、一番左の列(A列)には当ツールと同階層にあるフォルダ名を記入してください。

 

一つの行に複数のフォルダ名等の指定をしない

(注意)1行で記入できるセルは一つだけです。

 

存在するフォルダと存在するファイルを指定する

指定する「格納先フォルダ」は、既に存在するフォルダの名称と階層を記載してください。

指定する「ファイル」は、振り分けるフォルダ内に存在するファイルを記載して下さい。

 

上記のルールを守っていない行は、ファイル自動振り分けの対象から外れます。

その場合、誤っている箇所を赤色で表示させ、当該行の処理はスキップされます。

 

また、実行後に指定したフォルダが全て作成された場合と、問題箇所がある場合とで、メッセージが異なりますので確認してください。

 

ご利用に関するQ&A

本ツールはどのように取得できますか?

当記事内の「本ツールのダウンロードはこちら」よりマクロ付きExcelファイルがダウンロードができます。

※有料コンテンツの場合は、ご購入後にツールのダウンロード、VBAソースコードの確認ができます。

ツールの使い方等のサポートを受けることができますか?

当サイトでは早期対応の使い方サポートサービスを提供しておりますので、使用方法等が分からない場合でも安心してご利用いただけます。

簡易的な内容ですと、当記事のコメント欄よりお問い合わせください。またはサイト最上部にあります「お問い合わせフォーム」より不明点をお問い合わせください。

※早期対応は有料コンテンツをご利用いただいた方限定のサービスとなっております。

マクロの実行がブロックされてツールが使用できない場合はどうしたらいいですか?

本ツールは利用時に各環境の設定により、マクロの実行がブロックされる可能性があります。

マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。

なお、上記を実施しても解除できない場合はマクロを含まないExcelファイルと必要なVBAソースコードを別途ご案内いたします。

返金をお願いしたい場合はどうしたらいいですか?

ご購入後の24時間以内なら返金可能です。

その際は、サイト最上部にあります「お問い合わせフォーム」よりご連絡ください。

※有料コンテンツのみ

 

ご利用上の注意事項

本ツールはMicrosoft Excelのマクロ機能を用いて、プログラミング言語「VBA」にて作成しております。ご利用に関しては、以下の注意事項をご確認ください。

  • 本ツールの開発環境は、OS:Windows10 、Excelのバージョン:Microsoft 2016、Microsoft Office 365となっており、当該環境では動作確認ができていますが、他の環境での動作は完全には確認できていません。
  • 本ツールは利用時に各環境の設定により、マクロの実行をブロックする可能性があります。マクロ実行の許可は(別記事:マクロのブロックを解除する方法)を参考に進めて下さい。
  • 本ツールの利用で発生した問題の責任は負いかねます。事前に使い方をテスト、理解した上で、ご利用ください。
  • 本ツールはバージョンアップに伴い、ツール自体の仕様が変更になる可能性やアップデートされる可能性がございます。予めご了承ください。
  • ツールおよびプログラムの著作は当サイトを管理しております「デジたわ」にあります。無断での転載・再販・配布・共有は固く禁止しております。

 

時短ツールの特徴と紹介

『時短ツールラボ』では本ツール以外にもExcelマクロを利用した時短ツールを複数ご用意しております。

今後も随時新規で開発、公開していきますので是非ご覧ください。

全ツールはこちら(時短ツールラボ)からご確認ください。

時短ツールラボのツールの特徴

 

商品は全て買い切り

販売されるExcelマクロのツールは全て月額料金が発生しない「買い切り型」となっています。ランニングコストの心配をせずにツールを使用いただけます。

 

無料ツールもご用意

初めての方でも安心してご利用いただけるように「無料」で使用できるツールも多数用意しております。ツールの使用感を確かめたうえでご購入いただけます。

 

使い方のサポートが無料

有料ツールをご利用いただいた方限定で早期対応の使い方サポートサービスをご用意しております。初めてExcelマクロツールをご利用される方も安心ください。

 

返金制度あり

ご購入いただいてから24時間以内にご返金の申請をした場合は、全額返金させていただく返金制度もご用意しておりますので、ご安心ください。

 

ソースコードを閲覧可能

ツールをご利用いただいた方限定でVBAソースコードをご確認いただけます。ご自身でマクロ開発、VBAプログラミング学習をされる際にご活用ください。

 

⑥ 自由にカスタマイズ可能

マクロを含んだExcelファイルとVBAソースコードはご自身で使いやすいようカスタマイズ可能です。(※Excelファイル、VBAソースコード等の商用利用は不可となります。)

 

ツールのダウンロードはこちら

本ツールのダウンロード、VBAソースコードの確認等をする場合は、下記より500円でご購入ください。

【Excel VBA】複数文字列の一括置換ツール

※ダウンロードした本ツールを開くことができない場合は、マクロのブロックを解除する方法より
本ツールを開くことができるよう設定を変更してください。

正常に動作しない場合は、当記事のコメント欄または「お問い合わせフォーム」よりご連絡ください。

 

 <本ツールが業務効率化や時短につながりましたら、下のグッドボタンを押していただけたら幸いです>

コメントはこちら

  1. 茶々 より:

    こんにちは。
    ファイル自動振り分けのマクロを活用させていただいております。
    一つ質問をさせて下さい。

    フォルダ1→フォルダ2→フォルダ3というフォルダ1の中に2階層のフォルダが有り、フォルダ2にファイルA、フォルダ3にファイルBを振分けようとしましたが、うまく行きませんでした。
    フォルダ1にファイルA、フォルダ2にファイルBの振分けは出来ましたので、第1階層のフォルダには必ずファイルを割り当てないと振り分けは出来ないのでしょうか?
    第1階層のフォルダに振り分けずにその中のサブフォルダにファイルを振分けしたいと思っております。

    お手数ですが、振分け方法をご教授いただければと思います。
    宜しくお願い致します。

    • RH より:

      管理人のRHです。

      当ツールをお使い頂き、また併せて問題をご報告いただき、ありがとうございます。

      確かにおっしゃる通り、第1階層のフォルダには必ずファイルを割り当てないと振り分けができない仕様となっております。恐れ入ります、気が付きませんでした。

      目的を達成するための別の案として、以下の状態で実行してみるとうまくいきますでしょうか。
      1.この自動振り分けマクロのファイルを「フォルダ2」と同階層に配置する。
      2.A2セルには「フォルダ2」を記入し、C列に「フォルダ3」を記入する。
        ※ファイルAはB列、ファイルBはD列となります。

      • 茶々 より:

        返信ありがとうございます。
        説明不足で申し訳ございませんが、以下の使い方を想定しているのでご提案いただいた方法だとちょっと難しいと思います。

        ・フォルダ1→フォルダ2→フォルダ3のフォルダ2にファイルA、フォルダ3にファイルBを振り分けるというのがフォルダ違いで100パターン程有り、それを同時に処理したいと考えています。
        ・フォルダ1にファイルを振り分ける事も有るが、フォルダ1には振り分けずその中のサブフォルダのみにファイルを振り分ける使い方も有る

        試しにA2セルにフォルダ1、B2セルにダミーのファイル名、C3にフォルダ2、D3にファイルA、E4にフォルダ3、F4にファイルBを入れて実行するとB2セルは当然赤字でエラーになりましたが、フォルダ2、3にファイルの振分けをする事が出来ました。
        このやり方で使おうと思いますが、他に良い方法があれば教えていただけないでしょうか?

        お手数をお掛けしますが、宜しくお願い致します。

        • RH より:

          管理人のRHです。
          そうでしたか、誤った解釈しておりました申し訳ありませんでした。

          このツールの現状の作りでは、茶々様の言う通りB2にダミーファイル(存在しないファイル)を設定して動かすとそこをスキップして動作するので、ひとまずその方法での使用をお願いします。

          そのような使い方があったとは考えが足りなかったです。B2にファイル指定がない場合でも動くように修正致します。

          • 茶々 より:

            コメント、ありがとうございます。
            他の質問もありますので新たにコメントさせていただきます

  2. ぽぽぽん より:

    はじめまして。
    ファイルの自動振り分けの検索でこちらにたどり着きました。
    大変参考になります。

    使用してみてエラーというかうまくできない箇所がありましたのでご質問いたします。
    ファイル名で文字数の制限か、規則の制限はありますでしょうか?
    例えば、
    ①a_【asdko1010_10】【見積書】_相手先様_自分の名前
    上記のようなファイル名の場合、”【見積書】”の箇所までのファイル名は振り分けをしてくれるのですが、フルのファイル名だと振り分けのエラーがでてしまいます。
    すみかっこが原因なのか文字数の問題なのかなにか対策ありましたら教えていただけますと幸いです。
    (ファイルの文字数をカウントしたところ59文字前後になりました。)

  3. ぽぽぽん より:

    何度も申し訳ございません。
    先ほど質問させていただいたものです。

    ファイル名は何個試行錯誤してわかったのですが、
    どうやらファイル名のカタカナの濁音に問題があったようです。
    “ジ”が、シと゛に分かれていたのがエラーを起こしてしまう問題のようです。
    カタカナ部分を書き換えたところ無事読込できました。
    お手数おかけして申し訳ありません。
    ありがとうございました。

  4. RH より:

    管理人のRHです。
    当ツールをお使い頂き、ありがとうございます。

    ぽぽぽん様、無事マクロを実行できたということで安心しました、また何かありましたらコメントをお願いします。

  5. 茶々 より:

    度々のコメントで申し訳ございません。
    本ツールではフォルダの振分けは出来ないと思いますが、コードを一部変更してフォルダの振分けをする事は可能でしょうか?
    対応可能な場合、変更内容をご教授いただければと思います。

    マクロ、VBAの知識が無い為、大まかな質問になり申し訳ございませんが、宜しくお願い致します。

    • RH より:

      管理人のRHです。
      ご質問頂き、ありがとうございます。ご返答が遅くなりました。

      暫定的な対策として、フォルダを振り分けることも可能です。
      その場合は、136行目の「fileNm = Dir(ImportDir & “\” & fileNm & “.*”)」をコメントアウト(先頭に [‘] シングルコーテーションを付ける)していただければひとまずは正常にフォルダを振り分けることができます。

      しかし、136行目をコメントアウトした場合、通常の使い方であるファイルの振り分けを行うことができませんので、ご注意ください。

      >本ツールではフォルダの振分けは出来ないと思いますが、コードを一部変更してフォルダの振分けをする事は可能でしょうか?
      >対応可能な場合、変更内容をご教授いただければと思います。

      後日、改めてファイルとフォルダの両方を振り分け可能なコードを記載したいと思います。

      • 茶々 より:

        回答ありがとうございます。
        教えていただいた暫定対策で無事フォルダの振分けが出来ました。
        多くのフォルダを扱うので、本当に助かりました。

        • RH より:

          管理人のRHです。
          いえ、無事目的が達成されたとのことでよかったです。

          また何か作業効率化において必要な機能等がありましたら、ファイル自動振り分けツールとは関係ないものでも良いので、ご要望いただければと思います。

  6. 茶々 より:

    こんにちは。
    ファイル自動振り分けのマクロについてまた質問をさせていただきます。

    フォルダ名によってはこのマクロに対応が出来ないという事はありますか?
    フォルダ名が赤くなるエラーが発生し、見直してもフォルダ名は間違っておらず、コピー貼り付けでフォルダ名を再度入れ直してもやはりエラーになってしまいます。
    フォルダ名とファイル名は以下の通りになります。

    ・行2 フォルダ1:営業所別 ファイル1:1
    ・行3 フォルダ2:東京_6243 ファイル2:6243_東京
    ・行4 フォルダ1:営業所別 ファイル1:2
    ・行5 フォルダ2:南東京_6246 ファイル2:6246_南東京

    以前よりこのマクロを使用しており、別のパターンで使用しようと試した所、エラーが発生しました。
    お手数ですが、アドバイスをいただければと思います。

    宜しくお願い致します。

    • RH より:

      管理人のRHです。
      返信が遅くなり、申し訳ありません。

      ファイルを振り分けるために動作させたかと思いますが、おっしゃっていただいた以下のフォルダ構成とファイルを用意し、当マクロを実行させた場合は、私が使っている環境ですと正常に動作し、振り分けが完了しました。

      >・行2 フォルダ1:営業所別 ファイル1:1
      >・行3 フォルダ2:東京_6243 ファイル2:6243_東京
      >・行4 フォルダ1:営業所別 ファイル1:2
      >・行5 フォルダ2:南東京_6246 ファイル2:6246_南東京

      フォルダ名が赤くなるということは、通常考えられるのは指定したフォルダが存在していない、または指定した階層にフォルダが存在していない可能性が高そうです。
      コピー貼り付けでフォルダ名を指定頂いたとのことなので、もしかするとフォルダが存在する階層が原因かもしれません。今一度ご確認いただけますでしょうか。

      そして、まだ正常に動作しないようなら、可能なら茶々様のexcelのバージョンなどを教えていただいてよいでしょうか。

      • 茶々 より:

        こちらこそ返信が大変遅くなり、申し訳ございませんでした。
        具体的な原因は分かりませんが、PCを変えて試した所、問題なく処理出来ました。

        ご確認いただき、ありがとうございました。

  7. かき より:

    すみません、間違って違うとこにコメント載せちゃってたので再記しますm(_ _)m

    はじめまして、こちらのツール大変便利に活用させていただいています。
    vba独学初心者なのですが、操作の手間を削減するためにダイアログからのフォルダを指定せず、振り分けファイルのパスを直接指定してみたのですが上手くいきません
    フォルダセレクトの構文を消して
    Dim ImportDir As String
    ImportDir = フォルダパス
    ではダメでしょうか?何か手だてがあればご教示いただきたいです

    • RH より:

      管理人のRHです。
      かきさん、ツールを使用いただき、またコメント頂きありがとうございます。

      ダイアログを表示させずに、振り分けるファイルを固定のフォルダで処理する場合は、かきさんのおっしゃる箇所(85~96行目の部分)を修正することで合っています!

      しかし修正する内容としては、以下になります。
      ①「フォルダセレクトの構文を消して」 →記載OK
      ②「Dim ImportDir As String」 →不要
      ③「ImportDir = フォルダパス」 →記載OK

      “ImportDir” は20行目で既に宣言しているので、改めての宣言は不要となります。
      (※この記載があると二重定義になってしまうため)
      そのため②「Dim ImportDir As String」は書かずに、①部分をコメントまたは記載を消していただき、③を追加で記載いただけたら動作すると思います。

      思うように動作しない場合は改めてコメントいただけたらと思います。

      • かき より:

        できました!!
        とても助かりましたし勉強になりました!!
        返答も早く頂きましてありがとうございました

  8. かい より:

    はじめまして。
    ファイルの自動振り分けができないかネットを彷徨っていた所、こちらを発見し、求めていたモノだと感激し、使わして頂こうかと考えています。
    VBAは初心者なのですが、
    ファイル名に抽象性を持たせる為にはどうしたら良いでしょうか?または可能でしょうか?

    例えば、ファイル名に◯◯を含む場合、このフォルダに移動という挙動にしたいのです。

    ファイル名は、
    日付(20220919)+ユーザー名+種類(「見積り」や「案内」など).拡張子
    で考えています。

    ◯◯は基本的にユーザー名(会社名)となります。

    ユーザー毎にフォルダを一つ割り振っています。

    宜しくお願いします。

    • RH より:

      管理人のRHです。
      かいさん、ツールを使用いただき、またコメント頂きありがとうございます。

      ファイルに抽象性を持たせる場合は、例えばアスタリスクを用いてワイルドカードを使用させる等の動作になると思います。
      しかし、申し訳ありませんが、現時点ではツールは対応していません。
      >ファイル名に抽象性を持たせる為にはどうしたら良いでしょうか?または可能でしょうか?

      抽象的なファイル名等の指定にしても動作するように改修いたしますので、少々お待ちいただいて良いでしょうか。

      • 匿名 より:

        RH様

        返信ありがとうございます!
        対応できないのですね。

        自分でも勉強しつつ、
        改修心待ちにしております!

        • RH より:

          管理人のRHです。
          かいさん、コメント頂きありがとうございます。

          お待たせいたしました。ファイルに抽象性を持たせて指定した際に動作するよう9月19日に改修いたしました。

          例えば、
          「20220919_user1_見積り.xlsx」の命名ルールのファイルがあった場合に「ファイル/フォルダ」の項目に「*_user1_*.xlsx」と入力すれば、ユーザー毎に作られたフォルダにファイルを振り分けることができるかと思います。

          思うように動作しない場合は改めてコメントいただければと思います。

  9. めかぶ より:

    はじめまして。ファイルをフォルダに振り分けるVBAができないかと思い探していたところこちらにたどり着きました。まさに自分のやりたかったことと近く、感激しております。

    もしよろしければご教示いただきたいのですが、

    ファイル名が【取引先名_発注ナンバー_日付.xlsx】の発注書を毎日大量に作成しているため、ワイルドカードを使用して、作成済みの発注書を取引先名フォルダに自動振り分けするようにしたいと考えているのですが、振り分けるファイル名を*取引先*.xlsxで指定した場合、振り分け先に同じ名称のファイルがあるということでエラーになってしまうのですが何か方法はないでしょうか?

    A社_0001_0928
    A社_0002_0929
    A社_0003_1001

    →A社フォルダに随時蓄積

    よろしくお願いいたします。

    • RH より:

      管理人のRHです。
      めかぶさん、ツールの使用とコメントありがとうございます。

      現象について、もう少し詳しくお聞きしたいのですが、
      当方の環境で以下のファイルを作成して、「*A社*.xlsx」でファイル振り分け処理を行ってみたところ、正常に振り分けが完了しましたが、めかぶさんが行った操作と違ってますでしょうか?
      ・A社_0001_0928.xlsx
      ・A社_0002_0929.xlsx
      ・A社_0003_1001.xlsx

      また、質問の意図としては、既に存在するファイルも含めて割り振りたいということをご希望でしょうか。
      例)既にファイルがある場合は上書き保存する。(or 当該ファイルはスキップして他のファイルは振り分けるようにする)

  10. めかぶ より:

    RH様
    ご確認ありがとうございます。
    わかりにくくて申し訳ありません。

    下記のような流れで活用できればと思っております。

    ・9/29
    当日作成したファイルを「振り分け用」フォルダに入れ、各メーカー名のフォルダに振り分け(「振り分け用」フォルダのファイルは全削除)

    ・9/30
    当日作成したファイルを「振り分け用」フォルダに入れ、各メーカー名のフォルダに振り分け(「振り分け用」フォルダのファイルは全削除)

    上記要領で各メーカー名のフォルダにどんどんファイルを蓄積していく…
    (ファイル名はA社_XXXX_MMDD.xlsでメーカー名のみ不変)

    一度に振り分けを行う場合、処理できるのですが、
    「A社_0001_0928」を「A社」フォルダに移動した後、「A社_0002_0929」を「A社」フォルダに移動しようとするとエラーになる状態です。(振り分け元のフォルダには「A社_0002_0929」のみ、振り分け先のフォルダには「A社_0001_0928」が入っている状態)

    • RH より:

      管理人のRHです。
      めかぶさん、コメントありがとうございます。

      すいません、そういうことですね。理解致しました。
      二回に分けて同格納フォルダに振り分け実行した場合に、うまく動作しないとお見受けしました。わたしの環境でも同様の操作をしてみたところエラーメッセージが表示され正常に動作しませんでした。申し訳ありません、ツールの不具合でした。

      本日(2022年9月30日付)、複数回に分けて同様の格納先フォルダにワイルドカードを使用して実行させても動作するよう不具合を修正しましたので、改めてご使用いただけますと幸いです。(※全体のUIも少し変更しましたのでご了承ください。)

      思うように動作しない場合は改めてコメントいただければと思います。

  11. めかぶ より:

    RH様

    ご対応ありがとうございます。

    試してみたところ、希望していた通りの処理ができました!

    時間がかかっていた作業を効率化できそうです。
    本当にありがとうございます。

    • RH より:

      管理人のRHです。
      めかぶさん、コメントありがとうございます。

      業務の効率化ができるようになったようで、大変喜ばしく思います。
      また他のツールも是非ご使用いただけたら幸いです。

  12. ぽぽぽん より:

    はじめまして。
    ファイルをフォルダに自動で振り分ける事ができないかと思い探していたところ、このHPにたどり着きました。
    短納期で大量のファイルデータをフォルダに格納しなければならないので感激しております。

    しかしながらVBAって何だろう?という知識しかないため下記についてご教示頂けないでしょうか。

    データの保管場所がクラウド上での作業となります。
    格納フォルダと振り分けしたいファイルは同じフォルダ内にないと処理はできないのでしょうか。

    • RH より:

      管理人のRHです。
      ぽぽぽんさん、コメントありがとうございます。

      現状は、振り分けたいファイルはボタンを押した時に振り分けるファイルが存在するフォルダを選択できるので、ツールと同フォルダになくても問題ありませんが、格納先フォルダはツールと同じフォルダ内に存在していないと動作しません。

      データの保管場所がクラウド上にある環境のため、格納先フォルダとツールが同じフォルダ内になくても動作させたいというご要望で合ってますでしょうか。
      もしその認識が合っておりましたらツールを改修いたします。

    • RH より:

      管理人のRHです。

      ぽぽぽんさんから頂いたコメントより、ツールの使い勝手の面から、格納先フォルダがツールと同階層でなくても動作した方が良い(保存場所を指定する)と考えましたので、12/5にツールを改修しました。

  13. すけぽん より:

    はじめまして、こんにちは。
    記事拝見させていただきました。
    当方、パソコンの初心です。
    現在、大量のPDFファイルを所定のフォルダに振り分けする方法を模索しております。
    約20万枚のPDFファイルを、3万のフォルダに分類して振り分けしたいのですが、RH様の提供されているツールで可能でしょうか?

    詳細を説明しますと、PDFファイル名は「12桁の半角数字_一桁の半角数字」の半角文字14個です。
    最後の半角数字は1~9までの9通りあり、最初の12桁は3万通りあります。
    フォルダー名は、「12桁の半角数字_氏-名」で3万フォルダあります。

    例になりますが、
    PDFファイル[000000001234_1][000000009876_5]を、最初の12桁の半角数字が同じ
    フォルダー【000000001234_山田-太郎】【000000009876_山田-花子】にそれぞれ降り分ける事が可能でしょうか?
    説明が下手で申し訳ございませんが、ご教示いただけますでしょうか。
    よろしくお願いします。

    • RH より:

      管理人のRHです。
      すけぽんさん、コメントありがとうございます。返答が大変遅くなり申し訳ありません。

      お問い合わせ頂いた内容は、大きく以下2つの観点があるかと思います。

      1.ファイル名の先頭12桁の半角数字が同じであるフォルダ内に振り分けられるか。
      2.20万ファイルを3万フォルダに振り分けられるか。

      1に関しては、ファイル名にはワイルドカードが使用できますので、フォルダ名「000000001234_山田-太郎」、ファイル名「000000001234*」と入力すれば動作すると思います。
       ※フォルダ名が一意に特定できれば動作しますが、振り分けるフォルダ名のアンダーバー以降が複数存在しておりワイルドカード(*)を使う必要がある場合は現状のツールでは動作しません。

      2に関しては、実際3万ファイル分の動作確認ができておらず、使用するPCのスペック等の影響も受けるためすけぽんさんのPCで動作するかはなんとも言えません。
       可能でしたら何度かに分けて実行させる等の対処で、ある程度はカバーできるかと思います。

  14. […] 当記事にはマクロの元になるExcelファイルがダウンロード可能で、VBAのコードも記事内に記載がありますので、Excel VBAやマクロが良く分からないという方でもすぐに使用できます。 […]

  15. HIRO より:

    はじめまして。
    以前使用していたソフトが不安定になってきた為、
    検索していたところ、こちらにたどり着きました。
    エクセルベースなので、条件を入れやすく、とても重宝しております。
    同一名称ファイルが存在した場合に、ファイル名に文字を追加して(例えば日付)保存ということは可能でしょうか?

    • RH より:

      管理人のRHです。
      HIROさん、コメントありがとうございます。返答が遅くなり大変申し訳ありません。

      同一名称ファイルが存在した場合に、ファイル名に文字を追加して(例えば日付)保存ということは現ツールを改修すれば可能です。

      その場合は、ツールの仕様として、同一名称ファイル等が存在した場合にファイル名を変えて保存できるように選択肢を増やして、改修しますので今しばらくお待ちいただけますようお願いします。

      • HIRO より:

        RH様

        お世話になります。
        こちらも、大変。。大変返信が遅くなり申し訳ありません。
        改修は、お手すきの際に対応いただけましたらと思います。
        楽しみにお待ちしてます。

  16. KOZI より:

    はじめまして。
    ご質問ですが、自分のPCからファイル(PDF)をNAS(共有)に振り分けたいのですが、そのような事が可能でしょうか。
    いろいろ試したのですが、うまくいきませんでした。
    回答を宜しくお願い致します。

    • RH より:

      管理人のRHです。
      KOZIさん、コメントありがとうございます。

      NASに対して、ファイル振り分けができないということですね。
      以下内容の少し細かい状況をお聞きしたいのですが、
      ①実施している環境の前提としては、NASには「\\192.168.XXX.XXX」というようなIPアドレスを用いて指定している状況でしょうか、それともネットワークドライブに割り当てて(例えばUドライブなど)指定している状況でしょうか。
      ②うまく動作しないのは、どこかでエラーが発生している状況でしょうか。それともマクロは実行できるが思った挙動をしないという状況でしょうか。

      恐れ入りますが、ご確認いただけますと幸いです。

      • KOZI より:

        RHさま
        早急のご対応、大変感謝しております。

        ①ですが、IPアドレスを用いている状態です。
        ②ですが、実行すると「予期せぬエラーが発生しました、ツール利用ルールをもう一度実行してください。」とメッセージが表示されます。
        ヴァージョンはv3-1です。
        第一階層の格納先フォルダの一つ目の文字が赤くなっておりますので一つ目でエラーになっていると思われます。
        EXCELの振り分け先パスは該当の「\\192.168.1.233」と入力しております。
        もしかしたら、NASの権限は関係あったりしますでしょうか。PCより直接フォルダが見れる状態にはなっております。
        大変申し訳ありませんが、よろしくお願い致します。

        • RH より:

          管理人のRHです。
          KOZIさん、コメントありがとうございます。

          当方の環境ではNAS等に見立ててIPアドレスを指定して実施してみたところ正常に動作しました。

          KOZIさんのおっしゃるとおり、NASへのアクセス権限(書き込み可能か等)が影響している可能性があります。他にもPC内のセキュリティ対策ソフトがプログラムの実行を拒否していることもあるようです。

          既にご確認済みかとは思いますが、第一階層の格納先フォルダは存在していて、NAS側も読み書き可能な権限が付与されている状態で合っておりますでしょうか。

          また可能でしたら、ソースコードの以下を書き換えて実行いただくことは可能でしょうか。
          ①63行目をコメントにする(行の最初に ‘ を追加する)
          ②64行目に以下を追加する。
            Dim tempEMsg As String: tempEMsg = EMsg1 & vbCrLf & _
          “エラー番号:” & err.Number & “ エラー内容:” & err.Description
          MsgBox tempEMsg

          上記をしていただくとエラー内容がある程度分かりますので、エラー発生箇所を概ね判断することができます。

          お手数おかけしますが、宜しくお願いします。

          • KOZI より:

            RHさん
            いつも早急のご対応、ありがとうございます。
            試してみましたが、エラー内容は以下の通りとなります。
            ・・エラー番号:52 エラー内容:ファイル名または番号が不正です。・・
            上部の振り分け先パスをダブルクリックして第一階層の最初のところを表示されております。
            何度も大変申し訳ありませんが、よろしくお願い致します。

  17. RH より:

    管理人のRHです。
    KOZIさん、確認とコメントありがとうございます。
    (※返信数の上限を超えたので、新規でコメントします。)

    エラー番号:52の場合は、以下の原因等が考えられます。

    ①NASのパスである「\\192.168.XXX.XXX」が原因で、Excelで指定している「振り分け先パス」へアクセスできない。
    (解決方法)
     「\\192.168.1.233」をネットワークドライブに割り当てて、割り当てたパスを「振り分け先パス」に指定する。

    ②NASのパス「\\192.168.XXX.XXX」の後に漢字や認識出来ない文字が使われている、またはフォルダパスが長すぎる可能性がある。
    (解決方法)
     該当するファイルが保存してあるフォルダパスに漢字が使われている場合は、漢字を英語に一時的に変換してみる。そしてフォルダパスが長すぎる場合は半角256文字以内になるようフォルダ保存場所を変更してみる。

    お手数かけますが可能でしたら、上記のそれぞれ(解決方法)を実施してみて、今一度ツールの実行をお願いします。

    • KOZI より:

      RHさま
      早急のご対応、いつもありがとうございました。
      いろいろ試してみた結果、成功しました。
      前回の回答で頂いた事を試しましたが良い結果が得られず、いろいろ試行錯誤して試した結果、ひとつフォルダを間に追加して振り分け先パスに「\\192.168.XXX.XXX\フォルダー名」のようにフォルダーをひとつかませたら成功しました。
      なぜフォルダーを追加したら出来たのかは不明です。
      今後快適に作業が進みそうなので非常に感謝しております。
      ありがとうございました。

      • KOZI より:

        RHさま
        前回は、いろいろとお世話になりました。
        ひとつご相談ですが、ファイル振分け実行の際に振り分けるファイルが入っているフォルダを選択(指定)しますが、こちらも振り分け先パス同様画面で表示して指定できないでしょうか。
        宜しくお願い致します。

        • RH より:

          管理人のRHです。
          KOZIさん、対応とコメントありがとうございます。

          IPアドレスの後にフォルダ名を入れることで動作したということで原因は分かりませんが、無事動作したということで承知しました。

          また振り分けるファイルが入ったパスを画面に表示させることはできます。
          ご対応いたしますので、少々お待ちください。

  18. JT より:

    RH様

    お世話になっております。
    本ツールを使用させて頂きましたが、エラーメッセージの解消方法が分からず、連絡させて頂きました。

    「最初のフォルダで最上位階層を指定してください。」とメッセージが出るのは、どのように解消すればよろしいでしょうか。

    ツールの保存先(最上位階層)に各格納先フォルダがあり、そこにおのおののファイルを格納したいと考えています。
    下位階層がないので、1列目にフォルダ名、2列目にファイル名を入力し、実行した際に上記メッセージが表示されます。

    何卒宜しくお願い致します。

    • RH より:

      管理人のRHです。
      JTさん、ツールのご使用とコメントありがとうございます。
      返信が大変遅くなり、申し訳ありません。

      ダウンロードしたツールにソースコードをコピーする際に別ページ「複数のフォルダを階層指定して作成するマクロツール」のソースコードをコピーしてないでしょうか。

      今一度、当ページのソースコードをコピーしていただけますようご確認願います。
      「https://resthill.blog/excel-vba-tool3/#rtoc-11」

      上記を実施しても動作しない場合は、改めてコメントください。

  19. かび より:

    RH様

    はじめまして。
    こちらのツール、まさしく求めていただもので、大変感動しております。
    是非とも活用させていただきたく、一点教えていただけますでしょうか。
    (超初心者のため、質問に分かりにくい部分がありましたら申し訳ございません)

    振り分け先のフォルダ名指定に、抽象性をもたせることは可能でしょうか。

    ほかの方の質問・やりとりのなかで
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    ファイルに抽象性を持たせて指定した際に動作するよう9月19日に改修いたしました。

    例えば、「20220919_user1_見積り.xlsx」の命名ルールのファイルがあった場合に
    「ファイル/フォルダ」の項目に「*_user1_*.xlsx」と入力すれば、
    ユーザー毎に作られたフォルダにファイルを振り分けることができるかと思います。
    ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
    とのお話を拝見しました。

    振り分け先のフォルダ名の方も、同じようなことは可能でしょうか。
    具体的には、次のようなことがしたいと思っております。

    「202300816_向日葵社_契約書.pdf」のようなファイルを、
    取引先ごとのフォルダに振り分けたいのですが、社内のルールで
    フォルダをあいうえお順にならべやすいよう、
    フォルダ名の最初に「頭文字:」がつけられています。
    (「ひ:向日葵社」「ば:薔薇社」といったイメージです)

    そのため、契約書ファイル名の取引先とフォルダ名が一致せず、
    「202300816_向日葵社_契約書.pdf」を「ひ:向日葵社」フォルダに
    移動させることができない状況です。

    「向日葵社」を含む名前のフォルダに移動する、といった抽象性をもたせる方法が
    ございましたら、ご教示いただけますと幸いです。

    • RH より:

      管理人のRHです。
      かびさん、ツールのご使用とコメントありがとうございます。
      返信が大変遅くなり、申し訳ありません。

      フォルダ名に抽象性を持たせることは可能ですが、その場合にいくつかのフォルダ階層にまたがってファイル等を振り分ける際に複数のフォルダが対象になり、ツール使用者が複雑で使いにくくなることが予想されますので、別のツールという形で作成したいと思います。

      作成できましたら改めて記事投稿いたします。その際はこちらのコメント等で返信いたします。

      • かび より:

        RH様

        お忙しいなかご返信くださりありがとうございます。

        「別のツールで」とのこと、お手数をおかけして申し訳ございません。
        本当にありがとうございます。
        ご都合のよいときにご対応いただけますと幸いです。