← コード一覧へ戻る
実務フォルダー

フォルダを移動する

フォルダーと中身を、別の親フォルダーの下の新しいパスへ移動します。移動先が既にある場合は中止します。

実行前に確認

  • 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

図で見るファイルの変化

イメージ図

概念図:コピーではなく、中身ごと別の親フォルダーへ移します。

  1. 変更前

    C:\Data\移動元(中身あり) C:\Backup は作成済み C:\Backup\移動先 は未作成

  2. 手動:確認

    移動元と移動先を読み、[はい]

  3. マクロ:移動

    MoveFolderで中身ごと移動

  4. 変更後

    C:\Data\移動元 はなくなる C:\Backup\移動先 に中身が移る

[いいえ]、移動元・移動先の親がない、移動先が既にある場合は中止。事前にバックアップし、移動元自身や配下を移動先にしません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    移動元の練習用フォルダーをバックアップし、移動先の親C:\Backupを用意します。最後の「移動先」フォルダー自体は作りません。

  3. 3

    sourcePathとdestinationPathを変更します。destinationPathの末尾には\を付けず、移動元の配下も指定しません。

  4. 4

    実行するSubの内側にカーソルを置き、F5キーを押します。 確認画面で移動元・移動先を読み、正しい場合だけ[はい]を押します。

  5. 5

    移動元のフォルダーが元の場所からなくなり、指定先へ中身ごと移ります。同名の移動先が既にある場合は中止します。

使っている機能の公式ドキュメント(Microsoft Learn)