フォルダを移動する
フォルダーと中身を、別の親フォルダーの下の新しいパスへ移動します。移動先が既にある場合は中止します。
実行前に確認
- Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
- 先にバックアップを作ってください。元のパスを使うリンクが切れます。移動元自身や配下は移動先にしないでください。
- ワイルドカードは使いません。別ドライブへの移動可否は環境に依存するため、まず同一ドライブの練習フォルダーで確認してください。
1サンプルコード
Sub Example4014()
On Error GoTo Failed
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim sourcePath As String, destinationPath As String
sourcePath = "C:\Data\移動元"
destinationPath = "C:\Backup\移動先"
If Not fso.FolderExists(sourcePath) Then Err.Raise 76, , "移動元がありません"
If Not fso.FolderExists(fso.GetParentFolderName(destinationPath)) Then Err.Raise 76, , "移動先の親フォルダーがありません"
If fso.FileExists(destinationPath) Or fso.FolderExists(destinationPath) Then Err.Raise 58, , "移動先が既にあります"
If MsgBox(sourcePath & vbCrLf & "→" & destinationPath & vbCrLf & "中身ごと移動しますか?", _
vbYesNo + vbExclamation + vbDefaultButton2) <> vbYes Then Exit Sub
fso.MoveFolder sourcePath, destinationPath
MsgBox "移動先: " & destinationPath
Exit Sub
Failed:
MsgBox "処理を中止しました: " & Err.Description
End Sub図で見るファイルの変化
イメージ図概念図:コピーではなく、中身ごと別の親フォルダーへ移します。
変更前
C:\Data\移動元(中身あり) C:\Backup は作成済み C:\Backup\移動先 は未作成
手動:確認
移動元と移動先を読み、[はい]
マクロ:移動
MoveFolderで中身ごと移動
変更後
C:\Data\移動元 はなくなる C:\Backup\移動先 に中身が移る
[いいえ]、移動元・移動先の親がない、移動先が既にある場合は中止。事前にバックアップし、移動元自身や配下を移動先にしません。
コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。
使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
- 1
Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。
- 2
移動元の練習用フォルダーをバックアップし、移動先の親C:\Backupを用意します。最後の「移動先」フォルダー自体は作りません。
- 3
sourcePathとdestinationPathを変更します。destinationPathの末尾には\を付けず、移動元の配下も指定しません。
- 4
実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面で移動元・移動先を読み、正しい場合だけ[はい]を押します。
- 5
移動元のフォルダーが元の場所からなくなり、指定先へ中身ごと移ります。同名の移動先が既にある場合は中止します。