マクロで多量のファイルをフォルダに自動振り分けする方法
- エクセルVBAを使って、多量のファイルをフォルダに自動的に振り分けるマクロを作成したいです。以前教えていただいたマクロを使用して、一行ごとにテキストファイルを生成することはできましたが、フォルダの自動生成とファイルの振り分けについて教えていただきたいです。
- 生成するファイル名は4桁の数字で、ファイル自動生成時に特定の範囲のファイルは特定のフォルダに収めたいです。たとえば、1000番代のファイルはフォルダ1に、2000番代のファイルはフォルダ2に振り分けるようにしたいです。現在はファイルの生成はできているので、フォルダの自動生成とファイルの振り分けについて助言をいただけると助かります。
- マクロを使用して一行ごとにテキストファイルを生成する方法は以前教えていただきましたが、残りの課題としてフォルダの自動生成とファイルの振り分けについて教えていただきたいです。ファイル名は4桁の数字で、特定の範囲のファイルは特定のフォルダに振り分けたいです。例えば、1000番代のファイルはフォルダ1に、2000番代のファイルはフォルダ2に振り分けるようにしたいです。よろしくお願いします。
- ベストアンサー
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。 エクセルVBAで、一行の内容を1つのテキストファイルに出力して、 連続処理で複数行を一気に複数ファイルに生成しています。 そのマクロは以前質問して教えて頂いたマクロで、下記のアドレスから ご覧くださいませ。 http://okwave.jp/qa/q6201310.html ファイル生成のマクロは、回答No.2の方が教えてくれたマクロを採用し ています。(ベストアンサー) 生成するファイル名は4桁の数字なんですが、ファイル自動生成時に、 ファイル名が1000番代のファイルは、フォルダ名が1のフォルダに収め、 2000番代は2のフォルダへ・・といった具合に9000番代まで収めたいのです。 ファイルは生成できているので、 あとはフォルダの自動生成と 自動振り分けができるマクロを教えて頂けませんか? 宜しくお願い致します。
- オフィス系ソフト
- 回答数3
- ありがとう数3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
内容を換えました。 このマクロの特徴は、2列目を使うファイル名は4桁の数--つまり数字であるということ。 フォルダが見つからないと、マクロはストップしてしまいます。 '// Sub TestMacro1() Dim i As Long, k As Variant, j As Long, m Dim fn As String Dim mPath As String, nPath As String Dim rng As Range, ar As Variant Dim buf As String Set rng = Range("A1", Cells(Rows.Count, 1).End(xlUp).Offset(, 2)) 'パスを決める(CurDir は、カレントディレクトリ) mPath = CurDir & "\" '末尾には必ず¥を入れます。 ar = rng.Value For i = 1 To rng.Rows.Count fn = Format(ar(i, 2), "0000") & ".txt" nPath = mPath & Left$(fn, 1) & "\" If Dir(nPath, vbDirectory) = "" Then MsgBox "Folderが見つかりません", 48: Exit Sub Do Until Dir(nPath & fn) = "" k = Val(k) + 1 j = InStr(1, fn, "(", 1) If j > 0 Then '同名ファイルの場合 fn = Mid(fn, 1, j - 1) & "(" & k & ")" & ".txt" Else fn = Replace(fn, ".txt", "", , , 1) & "(" & k & ")" & ".txt" End If Loop Open nPath & "\" & fn For Output As #1 Print #1, ar(i, 1) & ar(i, 2) & ar(i, 3) Close #1 k = "" nPath = "" Next If Len(buf) > 2 Then MsgBox Mid(buf, 2) & vbCrLf & "重複のため保存は省かれました。" Else MsgBox mPath & "に出力されました。" End If End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17068)
勉強(と言ってもWEB照会してコードをさがす程度)をせず、全面的に回答頼りになっていませんか。 個別要素のコードは、良くある例なので、WEB照会で直ぐ見つけられます。 前問の回答にも使えるものがあります。前問の回答の周辺事項が身についてないのでは。回答コピーで動けば良しとするからでしょう。 (1)在るフォルダのすべてのフォルダを採り上げるコード (2)新規にフォルダを作成し、望みのフォルダ名にするコード (3)振り分けの判別(ファイル名の文字列の一部を切り出し、IF分を使うだけ) (4)ファイルをコピーして指定のフォルダに入れるコード などGoogleででも照会すれば、沢山ありますよ。 照会のキーワードは (1)VB Dir (2)VB Mkdir (3)Mid関数 (4)VB copy http://homepage1.nifty.com/rucio/main/Samples/s_sh3.htm 日本語で、例えば(2)は「VB フォルダ作成」などで照会しても良い ーー 本質問については、それぞれFSO(FileSystemObject)のコードでやる方法もあります。 (4)はMoveFileもある。
- hallo-2007
- ベストアンサー率41% (888/2115)
>ファイルは生成できているので、 あとはフォルダの自動生成と >自動振り分けができるマクロを教えて頂けませんか? この手の質問に回答するのはかなり度胸が必要なのですよ。 間違ったコードや操作でパソコンの中をめちゃくちゃにしてしまう可能性もあるからです。 参考程度の回答を致します。 失敗の事を考えて2つのステップで操作します。 ステップ1 指定したフォルダ内のファイル名をエクセルのシートに一覧で表示させます。 ステップ2 表示されたファイル名を別のフォルダーにコピィする。 ステップ3 うまく出来たらフォルダ内のファイルを削除する。 それぞれがうまく出来るか確認の上。次のステップに進んでください。 ステップ1 B2セルに ファイルが入っているフォルダ名を入れておきます。 Sub ボタン1_Click() Dim Buf As String Range("C3:D1000").ClearContents Buf = Dir(Range("B2").Value & "\" & "*.*") i = 3 Do While Buf <> "" Range("C" & i).Value = Buf Range("D" & i).Value = Left(Range("C" & i).Value,1) Buf = Dir() i = i + 1 Loop End Sub DirについてはWeb調べると色々と説明がされています。 C3セル以下にファイル名の一覧 D3セル以下にはファイル名の最初の1文字がでます。 Sub ボタン2_Click() For i=3 To Range("C65536").End(Xlup).Row FileCopy Range("B2").Value & "\" & Rnage("C" & i).Value, Range("D" & i).Value & "\" & Range("C" & i).Value Next End Sub FileCopy コピィ元のパスとファイル名,コピィ先のパスとファイル名 と指定して使います。 B2セルで指定したフォルダ(パス)で C列のファイル名を D列で指定したフォルダへ C列で指定したファイル名コピィします。 簡単なコードですので、ご自身で理解して使ってください。 お酒も履いてしまっているので スペルミスなどもあるかもしれません。 検証もしていていませんの保証もいたしません。 ご自身の責任で実行してください。
お礼
そういう懸念があったのですね。。 確かに出力すると数千ファイルが生成されるので、 間違った場合の削除にも手間がかかりました。。 教えて頂いたこと、慎重に検証させていただきますね^^ ありがとうございます。
関連するQ&A
- ファイルをフォルダに自動振り分け バッチファイル
Cドライブ直下の"A"フォルダにある1,000件のCSVファイルをCドライブ直下に作成した5つのフォルダ"1~5"に自動振り分けしたいと思っています。 振り分け条件はExcelで管理しており、CSVのファイル名(1,000件分)と振り分け先のフォルダ名(1,000件それぞれ1~5のフォルダ)を入力してあります。 バッチファイルでMOVEを利用して自動振り分けできないか…と考えていますが、上手く行きません。 どなたか教えていただけないでしょうか。宜しくお願いします。
- ベストアンサー
- その他(プログラミング・開発)
- Excelファイルがマクロを含むか調べるには?
Excell2003で作っていた多量のExcelファイルを、Excel2010で動かす事が必要になってきました。 で、指定フォルダにある複数のExcelファイルが、マクロを含んでいるかどうかを調べたいのです。 加えて、マクロを含んだExcelファイルのファイル名をリストアップしたいのですが、 どの様にしたら良いでしょうか? 適切なマクロなりともご教授いただきたく、よろしくお願いします。
- ベストアンサー
- その他(業務ソフトウェア)
- ファイルの自動振り分け&フォルダ自動作成を・・
ファイルの整理に悩んでおります。 大量のファイルがありますが、種類別に自動でフォルダを作成してファイルを移動させたいのですが 以下のルールで自動振り分け&フォルダ作成のできるソフトはあるでしょうか。できればフリーソフトを希望します。 ファイル名 [ABCD]あいうえおあいう [ABCD]かかきくけこここ [EE]みみまままう [EE]けけけかくけこ [QQQQQQQ]あいうえおあいう [QQQQQQQ]uuuuueeoeoo [ZZZZZZ]あいうえおあいう これらのファイルがフォルダにある場合 下層にに [ABCD]フォルダを作成して[ABCD]あいうえおあいう [ABCD]かかきくけこここ を移動する [EE]フォルダを作成して [EE]みみまままう [EE]けけけかくけこ を移動する [ZZZZZZ]は一つなので何もしない という風に [******]というフラグでまとめたいのですが何かいい方法はないでしょうか? よろしくお願いします。
- ベストアンサー
- Windows系OS
- フォルダ名と同じ名前を含むファイルを自動振り分け
はじめて質問させていただきます。 至らない点が多々あると思いますが、よろしくお願いいたします。 一つのフォルダの中に、下記の様なファイルとフォルダが300個あります。 ファイルの拡張子は、jpgとbmpの2種類です。 ファイル名は、フォルダ名と同じか、フォルダ名+_文字(アンダーバー以下は不規則な文字)です。 ※PC環境:windows10、64bit フォルダ名と同じ名前を含むファイルを自動で振り分けできる方法がありましたら教えてください。 例えば… aaaaaフォルダには、aaaaa.jpgとaaaaa_aoi.jpgファイルを移動。 bbbフォルダには、bbb.bmpとbbb_mika.jpgファイルを移動。 ファイル名:aaaaa.jpg bbb_mika.jpg aaaaa_aoi.jpg ccccccc.bmp bbb.bmp ccccccc_eri.bmp フォルダ名:aaaaa bbb ccccccc
- ベストアンサー
- Windows 10
- 自動で多量ファイルを多フォルダに振り分けるには
ImageGeter_1.3.6というソフトを使い、大量の画像データを入手したのですが、 数万単位のファイルを、「(長い)ファイル名+連番.jpg」の"ファイル名"別に 自動的にフォルダに振り分けたいのですが、例えば ・blog13.fc2.com_file_XXXXXX01.jpg ・blog13.fc2.com_file_XXXXXX02.jpg ・blog13.fc2.com_file_XXXUPX01.jpg ・blog13.fc2.com_file_XXXUPX05.jpg この4ファイルを、 ・「blog13.fc2.com_file_XXXXXX」 ・「blog13.fc2.com_file_XXXUPX」 2フォルダに自動的に振り分けられるソフトなどはあるのでしょうか? 回答お待ちしています。
- ベストアンサー
- その他(ITシステム運用・管理)
- VBA csvファイルを開いたまま自動マクロ動作
一通り検索したのですが、分からなかったので質問させて下さい VBAでcsvファイルを読み込んで動作させる自動マクロ(ファイル)があります 通常ですと、csvファイルを指定のフォルダーに保存してマクロを実行させると思うのですが このcsvファイルを先に開いたままで、自動マクロを実行させることは可能ですか? 具体的には、あるシステムからダウンロードしたcsvファイルを開いたまま 自動マクロファイルを読み込んで実行したいのです 対象:Excel2007/2010/2013 OS:WindowsXP/7 csvファイル名:c20130727123456789.csv(日付+任意の数値9桁) 自動マクロファイル:自動マクロ.xlsm
- 締切済み
- その他MS Office製品
- Automatorで指定フォルダに複数ファイル振分
複数のPDFファイル(50枚程度)を 下記の条件で一括操作したいと思っています。 環境 Mac OS X 10.6.8です デフォルトで搭載のAutomator使用 ・日付を追加 ・既存フォルダにそれぞれ振分 例)A.pdf→2014_0613_A.pdf→Aフォルダ B.pdf→2014_0613_B.pdf→Bフォルダ ※ファイル名はアタリです 日付は追加することができ、振り分けの方は 単純に「項目を検索→項目を移動」を50件位作れば 自動で振り分けられると思ったのですが、 毎回Aがある、という代物ではなく、ない時はエラーになってしまいました。 そこで、エラーが出ない方法、 もしくは効率的に作るアクションや、スクリプトなど 簡単に振り分けられる方法があればお教え願いたいです。 よろしくお願いします。
- 締切済み
- Mac
- バッチファイルで、ファイル名から自動振分したい
C:\B\の中に、必ず「半角数字4桁_」から始まるファイル名のデータが毎週入ります。 「半角数字4桁_」以後のファイル名、拡張子は、その週によって変わります。 C:\A\の中には、必ず「_半角数字4桁_」で終わるフォルダ名のサブフォルダがあります。 このフォルダ名は、ずっと変わることがありません。 C:\B\の中にあるデータを、ファイル名の最初の4桁の数字をもとに、C:\A\にあるサブフォルダに自動で移動したいです。また、移動する際に、既にサブフォルダ内に「半角数字4桁_」から始まるファイル名のデータがある場合は、削除してから移動したいです。 フォルダ構成です。 Cー| |-【A】 | |-【あいう_1234】 | |-【あい_2235】 | |-【かきくけ_8990】 | |-【アイウエオ_5014】 | |-【B】 | |-1234_ABC.txt ←このファイルは C:\A\【あいう_1234】に。 | |-2235_1534.txt ←このファイルは C:\A\【あい_2235】に。 | |-8990_22.doc ←このファイルは C:\A\【かきくけ_8990】に。 | |-5014_わをん.doc ←このファイルは C:\A\【アイウエオ_5014】に。 自分でバッチファイルを記述してみたのですが、ここからどうしていいか分かりません。 どなたか教えてもらえないでしょうか? よろしくお願いします。 自分で記述してみたバッチファイルです。 cd C:\B dir /b > C:\C\list.txt set folder=C:\A set file=C:\B set Bat=C:\C for /f "delims=" %%a in ( %Bat%\list.txt ) do if exist "%file%\%%a" move "%folder%\%%a" "%to%" PAUSE > NUL
- ベストアンサー
- その他(プログラミング・開発)
- ファイル名からフォルダを自動生成して振り分けしてくれるソフト
ファイル名からフォルダを自動生成して振り分けしてくれるソフト はありませんでしょうか。 当方、仕事で大量の連番ファイルを扱います。 ほとんどは以下のようなファイル名になっています。 abc.001.jpg abc.002.jpg abc.003.jpg ... qwerty_001.jpg qwerty_002.jpg qwerty_003.jpg ... ファイル名の長さは一意ではありません。 連番前の区切りには「.」ピリオドか「_」アンダーバーが使われます。 これらがひとつのフォルダの中にあるとき、 そのフォルダもしくは必要なファイルを指定することで、 ピリオドもしくはアンダーバーより前のファイル名からフォルダを自動生成して それぞれの連番を振り分けてくれることのできるソフトです。 ネットでもさまざまなファイル管理ソフトがありますが、 一番求める機能に近いものでも、ファイル名の前方からの文字数で フォルダ名を指定する必要があるなど、制限がありました。
- 締切済み
- フリーウェア・フリーソフト
- 最下層のファイルを一緒の階層に入っているフォルダに自動的に移動させる方
最下層のファイルを一緒の階層に入っているフォルダに自動的に移動させる方法を教えて下さい。 フォルダ名とファイル名は規則性がないのですが、複数ある場合手動で移動させるのが困難なため、 その方法を知りたいです。 仮に名前が上四桁が一緒の場合もやり方がありましたら教えてください。 使用しているのはAutomatorになります。
- 締切済み
- その他(プログラミング・開発)
お礼
書いて頂いた項目、順次調べさせてもらっています。 ご丁寧にありがとうございました。