- ベストアンサー
マクロを使って簡単にファイルをフォルダへ移したい
質問するのは初めてなのでわかりづらかったらすみません 「管理フォルダ」の中にある「0123」がついたファイルを 同じく「0123」とついたフォルダへ自動で移動させる コードなどがあれば教えていただきたいです できればフォルダ数が何個も増やせられると嬉しいです フォルダ数が500個以上になることがあるので 拡張子は「.csv」「.txt」がメインです どうぞよろしくお願い致します
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
画像の様に、 B1に入力フォルダ名(ファイルが入っている) B2に出力フォルタ名(サブフォルダが作ってある) をフルパスで入力して下さい。 Option Explicit ' Sub Macro1() Dim FSO As Object Dim PathName As String Dim FileName As String ' Set FSO = CreateObject("Scripting.FileSystemObject") PathName = Dir([B2] & "\*.", vbDirectory) ' Do While PathName > "" On Error Resume Next FSO.MoveFile [B1] & "\" & PathName & "*.*", [B2] & "\" & PathName On Error GoTo 0 PathName = Dir Loop MsgBox "終了" End Sub \ はコピペすると、半角¥になりますが、そのままでいいです。
その他の回答 (6)
- Ultra-Hetare
- ベストアンサー率38% (204/526)
要件の概要は理解しました。 ま、それなりに考えないといけないし、 コードを提示するなら時間は掛かると思います。 そもそもマクロはC言語全盛時代(以前?)からあります。 手続きの簡略化や自動化の意味で使われています。 VBA言語によるマクロは言葉が独り歩きしている 感がありますね。 プログラミングを使用してアプリケーション処理の あれこれ、面倒くさい手入力などの作業を 定型化・自動化しているのがMS-officeのマクロです。 ですが、かなりのことが可能でもあります。
お礼
本やWebを活用し勉強しながら頑張って組んでみようと思います お忙しい中、質問にご意見をくださりありがとうございました!
- imogasi
- ベストアンサー率27% (4737/17069)
https://gihyo.jp/book/1999/4-7741-0812-X のようなVBSCRIPTの本を読んで、ファイル関係の、どの機能を使えばよいか勉強するのがよい。 VBAで(本体とは別に)必須のファイル関係の知識です。 回答まる写しは、行き詰まるのでは。 なおVBAはWord、Access、PowerPoint、Outlookなど のあるよ。
お礼
わざわざありがとうございます 明日にでも本屋で購入し勉強しようと思います!
- kon555
- ベストアンサー率51% (1845/3564)
>> 初心者向けの本を買ってみようと思います! そうですね、ファイルの移動自体はvba(ちなみにExcelのマクロでいいんですよね?)可能なのですが、移動対象のファイルと移動先のフォルダがどういう関係にあるかとか、マクロブックがどこにあるとか、そういう前提条件次第で作り方を変える必要があります。 なので、『どこかの誰かが組んだマクロ』ではあまり使い物にならないので、貴方が勉強するのが1番近道になります。 本を買わなくても、WEBで検索すればかなりの情報が手に入るので、色々調べてみてもいいでしょう。 参考になりそうなページをご紹介しておきます。 http://officetanaka.net/excel/vba/file/file07.htm https://qiita.com/fakefurcoronet/items/505cb86f969fd616188a https://fastclassinfo.com/entry/vba_fso/
お礼
Webの情報までお教え下さりありがとうございました 本とWeb併用し勉強します!
- kon555
- ベストアンサー率51% (1845/3564)
要はこういう系統の事がしたい、という認識でいいのでしょうか。 https://ronpeeeblog.com/vba_move_file/ https://www.higashisalary.com/entry/file-sorting?amp=1
補足
そうです。このような系統にしたいのですが どこを変えればいいのかどこが対応しているのか理解できず…。 初心者向けの本を買ってみようと思います!
- SI299792
- ベストアンサー率47% (775/1622)
管理フォルダというのが解りません。 管理フォルダ内に、 0123というフォルダが作ってあり、そこへ 0123aaa.txt の様に、0123で始まるファイルを入れるのでしょうか。 その前提で作りました。 画像の様に、B1にフォルダ名を入れて実行して下さい。 Option Explicit ' Sub Macro1() Dim FSO As Object Dim PathName As String Dim FileName As String ' Set FSO = CreateObject("Scripting.FileSystemObject") PathName = Dir([B1] & "\*.", vbDirectory) ' Do While PathName > "" On Error Resume Next FSO.MoveFile [B1] & "\" & PathName & "*.*", [B1] & "\" & PathName On Error GoTo 0 PathName = Dir Loop MsgBox "終了" End Sub \ はコピペすると、半角¥になりますが、そのままでいいです。
補足
説明がかなり不足していました。すみません >>管理フォルダというのが解りません。 デスクトップに「管理フォルダ」と名前がついたフォルダがあり そこに大量の.csvや.txtファイルが入ってます 「管理フォルダ」 ┣0123_◯◯.csv ┣0133_◯◯.txt ┗9000_◯◯.txt 上記のものをCドライブやデスクトップ以外の場所にある 【処理済みフォルダ】の中に作ってある4桁の数字が一致しているフォルダの中に 移動できないかと思っていました。 「管理フォルダ」 ┣0123_◯◯.csv ┣0133_◯◯.txt ┗9000_◯◯.txt ↓ 「管理フォルダ」 (空っぽ) 【処理済みフォルダ】 【0123_フォルダ】 ┗ 0123_◯◯.csv 【0133_フォルダ】 ┗ 0133_◯◯.txt 【9000_フォルダ】 ┗9000_◯◯.txt 0123(4桁)で始まるファイルを入れる かなりの記載不足ですみませんでした 出先のため動作確認が行えませんが 戻り次第確認させていただきます 貴重なお時間を割いていただきありがとうございました
- Ultra-Hetare
- ベストアンサー率38% (204/526)
要件が不明瞭です。 移動させると、もとのフォルダは空になります。 しかし、同名のフォルダを検出するたびに、 そこに移動させるとうことは、それなりに工夫が必要ですし、 要件次第でその方法が異なる可能性があります。 また、同名フォルダの存在する範囲も分かりません。 さらに、マクロとご提示いただいていますが、 なんのマクロでも良いのでしょうか?
補足
Ultra-Hetare 様>> 「管理フォルダ」の中に「0001_〇〇」「0002_〇〇」と名前がついたファイルが複数あり 【処理済みフォルダ】の中にある【0001_〇〇】【0002_〇〇】というファイル名と同じ 4桁の数字がついた名前のフォルダに移動させたいのです 例)「0001_と名前のついたファイル」→【0001_と名前のついたフォルダへ移動】 「管理フォルダ」にいた「0001_〇〇」が【処理済みフォルダ】【0001_〇〇】へ移動できれば 「管理フォルダ」の中は空っぽになっても大丈夫です 4桁の数字で管理されているので 同名フォルダを検出することはないと思います すみません。あまりPC関係に詳しくないのですが Excelのマクロ以外にもマクロとは色々あるのでしょうか?
お礼
お忙しい中ありがとうございました!