VBA:【FSO】フォルダーの移動「MoveFolder」(FileSystemObject)とその問題点
◆フォルダーの移動
以下を実行すると、Path1フォルダーをPath2フォルダー配下に移動することができます。
※FSOを実行するには、VBEの「参照設定」で「Microsoft Scripting Runtime」が有効になっている必要があります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Private Sub FSO_フォルダー移動_Click() Dim FSO As Object Dim Path1 As String Dim Path2 As String Set FSO = CreateObject("Scripting.FileSystemObject") Path1 = "C:\Users\VBA\FSO\元フォルダー" Path2 = "C:\Users\VBA\FSO\移動先フォルダー" 'Path1フォルダーを、Path2フォルダー配下に移動' FSO.MoveFolder Path1, Path2 & "\" Set FSO = Nothing End Sub |
◆別ドライブに移動できない問題点と解決方法
「MoveFolderメソッド」によるフォルダの移動はローカルに対しては問題なく実行できますが、別ドライブやサーバー上のドライブだと「実行時エラー 70 書き込みできません」というエラーが出ます。
色々調べても解消できず、「MoveFolderメソッド」がサーバー等の別ドライブに対して実行できない仕様なのかもしれませんが裏付けがない感じです。
ひとまず解決策として「CopyFolderメソッド」を使う方法があります。
「MoveFolderメソッド」はエラーで止まっても、「CopyFolderメソッド」では実行できるので、コピーをした後、コピー元のフォルダを「RmDirステートメント」などで削除してしまえば結果は同じになります。
「CopyFolderメソッド」の記事
「RmDirステートメント」の記事