VBA FileSystemObjectでファイルを移動する(MoveFile)

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 6月 13, 2022

このチュートリアルでは、FileSystemObjectのMoveFileメソッドの使用方法を説明します。

VBAのFileSystemObjectでファイルを移動する

MoveFile メソッドは、1 つまたは複数のファイルをある場所から別の場所に移動します。

VBAのリファレンスを設定する

まず、FileSystemObjectを使用する場合、VB Scripting Runtimeの参照設定を行った方が良いでしょう。Visual Basic Editorを開き(ALT+F11)、ドロップダウンメニューからツール > 参照設定を選択して、「Microsoft Scripting Runtime」のチェックボックスにチェックを入れてください。

vba references window 参照設定

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
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples