【エクセルマクロ】ファイルを移動する:使用例8選

ExcelVBA-ファイルを移動する-eyecatch ExcelVBA

エクセルマクロで、ファイルを移動するVBAコードを記載しています。

このページのマクロコードは、コピペで使えます。
ぜひお試しください😉

ファイルを移動(Nameステートメント)

以下のマクロを実行すると、ファイルを移動します。


Sub ファイル移動()
    Name "C:\Users\admin\Desktop\A\Book1.xlsx" As "C:\Users\admin\Desktop\B\Book1.xlsx"
End Sub

 

マクロ実行前

「Book1.xlsx」は フォルダA にあります。


 

マクロ実行後

「Book1.xlsx」を フォルダB に移動します。


 

【補足】
・フォルダA に「Book1.xlsx」が存在しない場合は、エラーが発生します
・フォルダB に すでに同名ファイル(Book1.xlsx)が存在する場合は、エラーが発生します
 
 

ファイルを移動(Nameステートメント 変数使用)

以下のマクロを実行すると、ファイルを移動します。


Sub ファイル移動()

    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル名 As String

    '元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"

    '移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"

    '移動するファイル名を指定(元のフォルダに入っているファイルを指定)
    ファイル名 = "Book1.xlsx"

    ' ファイルを移動する
    Name 元フォルダ & ファイル名 As 先フォルダ & ファイル名

End Sub

 

マクロ実行前

「Book1.xlsx」は フォルダA にあります。


 

マクロ実行後

「Book1.xlsx」を フォルダB に移動します。


 

【補足】
・フォルダA に「Book1.xlsx」が存在しない場合は、エラーが発生します
・フォルダB に すでに同名ファイル(Book1.xlsx)が存在する場合は、エラーが発生します

 
 

ファイルを移動(Nameステートメント すべてのファイル)

以下のマクロを実行すると、フォルダ内のすべてのファイルを移動します。


Sub ファイル移動()

    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル名 As String
    
    '元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"
    
    '移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"
    
    '元のフォルダ内のすべてのファイルを移動する
    ファイル名 = Dir(元フォルダ & "*.*")
    Do While ファイル名 <> ""
        Name 元フォルダ & ファイル名 As 先フォルダ & ファイル名
        ファイル名 = Dir
    Loop

End Sub

 

マクロ実行前

フォルダAに、ファイルが複数存在しています。


 

マクロ実行後

フォルダAの全ファイルを フォルダBに移動します。


 

【補足】
・フォルダB に すでに同名ファイルが存在する場合は、エラーが発生します
 
 

ファイルを移動(FSO)

以下のマクロを実行すると、ファイルを移動します。
FileSystemObject(FSO)を利用することで、
ファイルやフォルダに対する様々な操作を行うことができます。


Sub ファイル移動()

    Dim FSO As Object
    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル名 As String
    
    ' FileSystemObjectを作成
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ' 元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"
    
    ' 移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"
    
    ' 移動するファイル名を指定(元のフォルダに入っているファイルを指定)
    ファイル名 = "Book1.xlsx"
    
    ' ファイルを移動する
    FSO.MoveFile 元フォルダ & ファイル名, 先フォルダ & ファイル名
    
End Sub

 

マクロ実行前

「Book1.xlsx」は フォルダA にあります。


 

マクロ実行後

「Book1.xlsx」を フォルダB に移動します。


 

【補足】
・フォルダA に「Book1.xlsx」が存在しない場合は、エラーが発生します
・フォルダB に すでに同名ファイル(Book1.xlsx)が存在する場合は、エラーが発生します
 
 

ファイルを移動(FSO すべてのファイル)

以下のマクロを実行すると、フォルダ内にあるすべてのファイルを移動します。


Sub ファイル移動()

    Dim FSO As Object
    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル As Object
    
    ' FileSystemObjectを作成
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ' 元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"
    
    ' 移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"
    
    ' フォルダA内のすべてのファイルを取得し、移動する
    For Each ファイル In FSO.GetFolder(元フォルダ).Files
        FSO.MoveFile ファイル.Path, 先フォルダ & FSO.GetFileName(ファイル.Path)
    Next ファイル

End Sub

 

マクロ実行前

フォルダAに、ファイルが複数存在しています。


 

マクロ実行後

フォルダAの全ファイルを フォルダBに移動します。


 

【補足】
・フォルダB に すでに同名ファイルが存在する場合はエラー発生
 
 

ファイルを移動(FSO 拡張子を指定)

以下のマクロを実行すると、フォルダ内にある拡張子が「xlsx」のファイルを移動します。


Sub ファイル移動()

    Dim FSO As Object
    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル As Object

    ' FileSystemObjectを作成
    Set FSO = CreateObject("Scripting.FileSystemObject")

    ' 元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"

    ' 移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"

    ' フォルダA内のすべてのファイルを取得し、移動する
    For Each ファイル In FSO.GetFolder(元フォルダ).Files
    
        ' ファイルの拡張子が「xlsx」の場合のみ移動する
        If LCase(FSO.GetExtensionName(ファイル.Path)) = "xlsx" Then
            FSO.MoveFile ファイル.Path, 先フォルダ & FSO.GetFileName(ファイル.Path)
        End If
    Next ファイル

End Sub

 

マクロ実行前

フォルダA に、ファイルが複数存在しています。


 

マクロ実行後

フォルダA の中で拡張子が「xlsx」のファイルだけ、フォルダBに移動します。


 

【補足】
・フォルダB に すでに同名ファイルが存在する場合は、エラーが発生します

 
 

ファイルを移動(FSO 今月のフォルダ)

以下のマクロを実行すると、現在の月のフォルダにファイルを移動します。


Sub ファイル移動()

    Dim FSO As Object
    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim ファイル As Object
    Dim 今月フォルダ As String
    
    ' FileSystemObjectを作成
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ' 元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"
    
    ' 移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"
    
    ' 今月のフォルダ名を取得(例:202306)
    今月フォルダ = Year(Now) & Format(Month(Now), "00")
    
    ' 今月のフォルダが存在しない場合は作成する
    If Not FSO.FolderExists(先フォルダ & 今月フォルダ) Then
        FSO.CreateFolder (先フォルダ & 今月フォルダ)
    End If
    
    ' 「フォルダA」内のすべてのファイルを取得し、移動する
    For Each ファイル In FSO.GetFolder(元フォルダ).Files
        FSO.MoveFile ファイル.Path, 先フォルダ & 今月フォルダ & "\" & FSO.GetFileName(ファイル.Path)
    Next ファイル
    
End Sub

 

マクロ実行前

フォルダA に、ファイルが複数存在しています。
フォルダB には、年月のフォルダが入っています。


 

フォルダB の今月フォルダ(202306)は、空の状態です。


 

マクロ実行後

フォルダA の全ファイルを、フォルダB の 今月フォルダ(202306)に移動します。

フォルダB に今月フォルダが存在しない場合は、
自動で今月フォルダを作成して、ファイルを移動します。


 

【補足】
・フォルダB に すでに同名ファイルが存在する場合は、エラーが発生します
 

ファイルを移動(FSO CSVファイル)

以下のマクロを実行すると、CSVファイルだけ移動します。


Sub ファイル移動()

    Dim FSO As Object
    Dim 元フォルダ As String
    Dim 先フォルダ As String
    Dim サブフォルダ As Object
    Dim ファイル As Object
    
    ' FileSystemObjectを作成
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    ' 元のフォルダのパスを指定
    元フォルダ = "C:\Users\admin\Desktop\A\"
    
    ' 移動先のフォルダのパスを指定
    先フォルダ = "C:\Users\admin\Desktop\B\"
    
    ' フォルダA内の各フォルダに対して処理を実行
    For Each サブフォルダ In FSO.GetFolder(元フォルダ).SubFolders
        
        ' サブフォルダ内のすべてのcsvファイルを取得し、移動する
        For Each ファイル In FSO.GetFolder(サブフォルダ.Path).Files
            If FSO.GetExtensionName(ファイル.Path) = "csv" Then
                FSO.MoveFile ファイル.Path, 先フォルダ & FSO.GetFileName(ファイル.Path)
            End If
        Next ファイル
        
    Next サブフォルダ
    
End Sub

 

マクロ実行前

フォルダA の中に、フォルダとファイルが複数存在しています。


 

フォルダB は、空の状態です。


 

マクロ実行後

フォルダA の各フォルダにある すべてのCSVファイルを、フォルダB に移動します。


 

フォルダB に、CSVファイルが入ります。


 

【補足】
・フォルダB に すでに同名ファイルが存在する場合は、エラーが発生します
 
 
この記事がお役に立ちますと幸いです。
 

【エクセルマクロ】ファイルを開く:具体的な使用例6選
...

 

「ExcelVBA自動化のすべて ~35の事例で課題解決力を身につける~」
業務改善コンサルタントが教える ビジネスの現場で役立つExcelVBAの知識を解説
基本的な解決法と、応用例も紹介しています!