VBA:【FSO】フォルダーの移動「MoveFolder」(FileSystemObject)とその問題点


  • フォルダごと他のフォルダに移動したい。
  •  フォルダを他のフォルダに移動する方法の一つに「File System Object(FSO)」を利用する方法があります。ここでは「MoveFolderメソッド」を使った方法を説明していきます。

    ◆フォルダーの移動

     以下を実行すると、Path1フォルダーをPath2フォルダー配下に移動することができます。
    ※FSOを実行するには、VBEの「参照設定」で「Microsoft Scripting Runtime」が有効になっている必要があります。

    ◆別ドライブに移動できない問題点と解決方法

     「MoveFolderメソッド」によるフォルダの移動はローカルに対しては問題なく実行できますが、別ドライブやサーバー上のドライブだと「実行時エラー 70 書き込みできません」というエラーが出ます。
     色々調べても解消できず、「MoveFolderメソッド」がサーバー等の別ドライブに対して実行できない仕様なのかもしれませんが裏付けがない感じです。

     ひとまず解決策として「CopyFolderメソッド」を使う方法があります。
     「MoveFolderメソッド」はエラーで止まっても、「CopyFolderメソッド」では実行できるので、コピーをした後、コピー元のフォルダを「RmDirステートメント」などで削除してしまえば結果は同じになります。

    「CopyFolderメソッド」の記事

    VBA:【FSO】フォルダーのコピー「CopyFolder」(FileSystemObject)

    【VBA】FileSystemObjectを使ってフォルダーをコピーする方法

    「RmDirステートメント」の記事

    VBA:フォルダの削除「RmDirステートメント」

    【VBA】フォルダの削除「RmDirステートメント」について



    おすすめ