VBA FileSystemObjectでファイルを移動する(MoveFile)
In this Article
このチュートリアルでは、FileSystemObjectのMoveFileメソッドの使用方法を説明します。
VBAのFileSystemObjectでファイルを移動する
MoveFile メソッドは、1 つまたは複数のファイルをある場所から別の場所に移動します。
VBAのリファレンスを設定する
まず、FileSystemObjectを使用する場合、VB Scripting Runtimeの参照設定を行った方が良いでしょう。Visual Basic Editorを開き(ALT+F11)、ドロップダウンメニューからツール > 参照設定を選択して、「Microsoft Scripting Runtime」のチェックボックスにチェックを入れてください。
FileSystemObject
次に、FileSystemObjectを作成する必要があります。
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
これで、MoveFile と他の FileSystemObjectメソッドにアクセスできるようになりました。
1つのファイルを移動する
1つのファイルを移動するには、FSO.MoveFile( source, destination ) という簡単な構文を使用します。
FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"
上記のように、まずFileSystemObjectを作成します。
Sub FSOMoveFile()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:\Src\TestFile.txt", "C:\Dst\ModTestFile.txt"
End Sub
複数のファイルを移動する
同じ名前のパーツで複数のファイルを移動することができます。
FSO.MoveFile "C:\Src\TestFile*.txt", "C:\Dst"
または、同じ拡張子のファイルを複数移動することができます。
FSO.MoveFile "C:\Src\*.xlsx", "C:\Dst\"
または、単純にフォルダーからすべてのファイルを移動することもできます。
FSO.MoveFile "C:\Src*", "C:\Dst
ここで、ワイルドカード文字の * を使用していることに注意してください。 ワイルドカードを使用する代わりに、For Eachループを使用してフォルダー内のすべてのファイルを移動することもできます。
Sub FSOMoveAllFiles ()
Dim FSO As New FileSystemObject
Dim FromPath As String
Dim ToPath As String
Dim FileInFromFolder As Object
FromPath = "C:\Src\"
ToPath = "C:\Dst\"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each FileInFromFolder In FSO.GetFolder(FromPath).Files
FileInFromFolder.Move ToPath
Next FileInFromFolder
End Sub
新しいフォルダーにファイルを移動する
ファイルを新規に作成したフォルダーに移動することもできます。そのためには、次のコマンドを追加します。
MkDir "C:\Dst"
というコマンドを追加してください。
Sub FSOMoveAllFiles ()
Dim FSO As New FileSystemObject
Dim FromPath As String
Dim ToPath As String
Dim FileInFromFolder As Object
FromPath = "C:\Src\"
MkDir "C:\Dst\"
ToPath = "C:\Dst\"
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each FileInFromFolder In FSO.GetFolder(FromPath).Files
FileInFromFolder.Move ToPath
Next FileInFromFolder
End Sub
フォルダを移動する
フォルダの移動は、MoveFolderメソッドを使用します。
Sub FSOMoveFolder()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder "C:\OldFolder", "C:\DstNewFolder"
End Sub