VBAでフォルダを移動する方法として、FileSystemObjectのMoveFolderを使用することで実現できます。
FileSystemObjectは、ファイルシステムオブジェクトを操作するための標準ライブラリであり、ファイルやフォルダの作成や削除、コピー、移動などを簡単に行うことができます。
MoveFolderメソッドは、指定された移動元フォルダを、指定された移動先フォルダに移動します。
移動元のフォルダは、移動するためなくなります。
ここでは、FileSystemObjectのMoveFolderを使ってVBAでフォルダをコピーする方法について説明します。
もくじ
【サンプルソース】フォルダの移動
以下は、FileSystemObjectのMoveFolderを使用してVBAでフォルダを移動するサンプルコードです。
MoveFolderメソッドは、移動元フォルダを、移動先フォルダに移動します。
移動元のフォルダは、削除されます。
Sub MoveFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' 移動元のパス
Dim source As String
source = "D:\200_work\100_sample\AAA"
' 移動先のパス
Dim destination As String
destination = "D:\200_work\100_sample\BBB"
' フォルダを移動する
fso.MoveFolder source, destination
' オブジェクトを解放する
Set fso = Nothing
MsgBox "END"
End Sub
上記のサンプルコードでは、まずFileSystemObjectを生成し、移動元フォルダのパスを指定します。
次に、移動先フォルダのパスを指定します。
MoveFolderメソッドを使用して、AAAフォルダをBBBフォルダとして移動します。
CopyFolderメソッドに指定する引数は、以下の2つです。
1つ目の引数は、移動元フォルダパスを指定します。
2つ目の引数は、移動先フォルダパスを指定します。
注意点は以下です。
- 移動元フォルダが存在しない場合、エラーが発生します。
- 移動先フォルダが既に存在している場合、エラーが発生します。
- 移動元フォルダの中身(ファイルやサブフォルダ)も移動します。
具体的には、AAAフォルダが存在しない場合、エラーが発生します。
存在していることを確認してください。
BBBフォルダが既に存在する場合、エラーが発生します。
存在しないことを確認してください。
【サンプルソース】フォルダの移動(コピー元フォルダ名と同じフォルダ名で移動)
以下は、コピー元フォルダ名と同じフォルダ名で移動する方法を説明します。
Sub MoveFolder()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
' 移動元のパス
Dim source As String
source = "D:\200_work\100_sample\AAA"
' 移動先のパス
Dim destination As String
destination = "D:\200_work\100_sample\BBB\"
' フォルダを移動する
fso.MoveFolder source, destination
' オブジェクトを解放する
Set fso = Nothing
MsgBox "END"
End Sub
上記のサンプルコードでは、移動先フォルダパスの最後が”\”になっています。
この場合、移動元フォルダは移動先フォルダの配下に移動されます。
具体的には、AAAフォルダはBBBフォルダの配下に移動されます。
つまり、D:\200_work\100_sample\BBBの配下にAAAフォルダは移動され、
D:\200_work\100_sample\BBB\AAAとなります。
もちろん、AAAフォルダの中身も移動されます。
注意点は、移動先フォルダが存在していないとエラーが発生します。
具体的には、BBBフォルダが存在していないとエラーになります。
まとめ
VBAでフォルダを移動する方法として、FileSystemObjectのMoveFolderを使用する方法を紹介しました。
移動先フォルダパスの末尾に”\”をつけた場合と、つけなかった場合で移動の動きが変わりますので、注意しましょう。
以上です。
最後まで読んでいただきありがとうございました。
この記事をシェアしていただけると喜びます。

