![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
タイトルに書きました通り、特定のフォルダーのファイルを違う親フォルダーのサブフォルダーに移動したいのですが、移動先がたくさんのフォルダーが階層になっていて上手く処理できません。
ファイル名と一致するサブフォルダーに移動したいのですが、このファイル名も半角スペースがたくさん入っていて冗長になっています。
自分で色々調べて書いてみたのですが、再起処理が上手くできません。
どうかお力をお貸しいただけませんか?
Sub Test()
Dim MyPath As String
MyPath = "C:\Users\owner\Desktop\A\B\"
Call Sample(MyPath)
End Sub
Sub Sample(MyPath As String)
Dim F As Object
Const folder1 As String = "C:\Users\owner\Desktop\テスト用\"
Dim ファイル名, フォルダ名1, フォルダ名2, フォルダ名3 As String
ファイル名 = Dir(folder1 & "*記録用*.xls")
Do Until ファイル名 = ""
フォルダ名1 = Split(ファイル名, " 記録用")(0)
フォルダ名2 = Mid(フォルダ名1, InStr(フォルダ名1, " ") + 1)
フォルダ名3 = Mid(フォルダ名2, InStr(フォルダ名2, " ") + 1)
If Dir(MyPath & フォルダ名3, vbDirectory) <> "" Then
Name folder1 & ファイル名 As MyPath & フォルダ名2
End If
ファイル名 = Dir()
Loop
With CreateObject("Scripting.FileSystemObject")
For Each F In .GetFolder(MyPath).SubFolders
Call Sample(F.Path)
Next F
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/02 11:48
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/07/01 12:54
- Visual Basic(VBA) 【マクロ】フォルダにファイルが1つも無い時に、ファイルがありませんとメッセージを表示する 4 2022/08/28 08:48
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
サブフォルダ内のファイルを全部移動させたい。
Visual Basic(VBA)
-
ファイル名を該当フォルダ内から検索して移動
その他(プログラミング・Web制作)
-
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。
PowerPoint(パワーポイント)
-
-
4
ファイル名から該当フォルダへ移動
Visual Basic(VBA)
-
5
複数フォルダをまとめて移動するバッチ
Windows Vista・XP
-
6
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
7
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
8
VBA フォルダ名に特定の文字を含むフォルダを別フォルダにコピーするコードを教えて下さい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】ファイル名の日付に...
-
Windows10でコマンドプロンプト...
-
Excelのハイパーリンクについて...
-
多量のファイルをフォルダに自...
-
VBA 最新のフォルダ取得
-
バッチファイルが保存されてい...
-
Excelvbaでブックをコピー名前...
-
サーバ内のフォルダ名と各フォ...
-
あるフォルダの中にあるファイ...
-
複数のサイト(別々のサーバー...
-
ディレクトリ名変更してコピー...
-
エクセル マクロで任意のフォ...
-
DLLの暗黙リンクの調べ方
-
同一フォルダ内の別ブックから...
-
フォルダ内のPDFファイル名を変...
-
Debug フォルダは消していいの?
-
マクロについて教えてください ...
-
フォルダを開いて、閉じるのプ...
-
ExcelVBAでフォルダへのハイパ...
-
VBSでファイル名と同じフォルダ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
ファイル名と同名のフォルダを...
-
VBA 最新のフォルダ取得
-
【マクロ】ファイル名の日付に...
-
windowsでテキストファイルの各...
-
デスクトップの画像をhtmlに表...
-
Access VBA で フォルダ権限...
-
フォルダ内のPDFファイル名を変...
-
パス名に2バイト文字(マルチバ...
-
多量のファイルをフォルダに自...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
ディレクトリ名変更してコピー...
-
VBA フォルダ名に特定の文字を...
-
エクセルマクロで指定フォルダ...
-
保存先のフォルダ名を指定した...
-
あるフォルダの中にあるファイ...
-
ExcelのVBAでフォルダ指定がで...
-
エクセルのマクロについて教え...
-
Excel VBA で フォルダ名の一部...
おすすめ情報
ご回答ありがとうございます。移動させたいファイルが暗号化ファイルであることと、移動先のサブフォルダがかなり階層化されていることからファイルを開かないで移動できればと思っております。
ご回答ありがとうございます。
文章化させていただきます。
"C:\Users\owner\Desktop\テスト用\"に日付と通し番号で始まり最後が記録用で終わるエクセルファイルが複数あります。
"C:\Users\owner\Desktop\A\B\"のサブフォルダーのサブフォルダーのさらにサブフォルダーに記録用のファイルと部分一致するサブフォルダーがあり(サブフォルダーがない場合もあり、その際は移動しません)、そこにファイルを移動したいです。
ご丁寧にありがとうございます。教えていただいたコードですが、ファイル名=Dirのところでエラーになってしまうのですが、どうしたらいいのでしょうか?ファイル名を処理してフォルダー名3まではうまくいっています。
ご回答ありがとうございます。補足させていただきます。
ファイル名
200303 5678 ☆ ●●.xlsx
221224 4321 ▲▲ ★.xlsx
230216 1234 〇〇 △△.xlsx
C:\Users\owner\Desktop\A\B
BーTーFー○○ △△フォルダー
ーGーNー☆ ●●フォルダー
Bフォルダー配下にファイル名を処理した変数フォルダ名3のフォルダーがなければ処理しません。
説明分かりにくくなってしまいました。申し訳ありません。
ファイル名間違えました。すみません。
200303 5678 ☆ ●● 記録用.xlsx
221224 4321 ▲▲ ★ 記録用.xlsx
230216 1234 〇〇 △△ 記録用.xlsx
遅くなってしまい申し訳ございません。
下記回答させていただきます。
1.拡張子は.xlsxである。
(拡張子が.xlsm .xls 等は移動対象外とする)
→はい
②→通し番号は桁数固定です
③④→日付の後、通し番号の後は半角スペース1桁固定です
⑤→記録用の前の半角スペースは1桁のみです。
3.取得したフォルダ名3について
取得したフォルダ名3の中に半角スペースが含まれることはありますか。
例 200303□□5678□☆□●●□記録用.xlsx
(半角1桁の空白を□で表しています)
の場合、フォルダ名3は「☆□●●」になりますが、このようなケースはありますか。
→多々あります。半角スペースが多くて3つ程あることがあります。
4.サブフォルダについて
→はい。もし一致するものがあった場合、そのフォルダーはSUB3にあります。
5.サブフォルダ名=ABC〇〇△△△XYZ ・・・部分一致する
→これについては△が一つ多いので不一致扱いです。取得したフォルダー名3と完全一致のものが対象です。
6.念のための確認
① ファイル名の最後の3文字が「記録用」でない→はい対象外です
→ファイル名は規則正しく付けられてるため②③④このようなケースはないかと思われます
1.ファイル名が以下のようなケースは移動対象外で良いですか。
(半角1桁の空白を□で表しています)
① 200303□5678□☆●●記録用.xlsx ・・・「記録用」の前に空白がない
→記録用の前に空白がないケースはありません
2.複数のフォルダが移動対象の候補として存在する時、どのフォルダに移動されるかは
不確定ですがよろしいでしょうか。(マクロが最初に検知したほうのフォルダになります)
→フォルダーが存在する場合一つのみになります
3.移動先のフォルダに移動対象となるファイルが既に存在する場合は、
移動を行いませんがよろしいでしょうか
→はい
ご丁寧にありがとうございます。結果を確認できるのはとても助かります!VBAの勉強はまだまだ未熟なため色々なアプローチの方法を知っておきたいと思い補足させていただきました。宜しくお願い致します。