Excel VBA FileSystemObjectでファイルを移動

ファイル/フォルダ操作

今回は「FileSystemObject」オブジェクトを使用してファイルを移動する方法をご説明します。

「FileSystemObject」オブジェクトとは、ドライブ、フォルダ、ファイルを操作する事ができるオブジェクトです。

「FileSystemObject」オブジェクトの使い方も併せてご説明します。

他のファイル/フォルダの操作は次の記事をご覧ください。

1.FileSystemObjectの使い方

FileSystemObject」オブジェクトは、ドライブ、フォルダ、ファイルなどを操作する事ができるオブジェクトです。

FileSystemObjectを使用するには「CreateObject」メソッドを使用して次のように記載します。

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
FileSystemObjectのメソッド一覧
メソッド操作内容
BuildPathパスの末尾に、指定したフォルダ名を追加したパスを返します
CopyFileファイルをコピーします
CopyFolderフォルダをコピーします
CreateFolder新しいフォルダを作成します
CreateTextFile新しいテキストファイルを作成します
DeleteFileファイルを削除します
DeleteFolderフォルダを削除します
DriveExistsドライブが存在するかどうか調べます
FileExistsファイルが存在するかどうか調べます
FolderExistsフォルダが存在するかどうか調べます
GetAbsolutePathName省略したパスから完全なパス名を返します
GetBaseName拡張子を除いたファイルのベース名を返します
GetDrive指定したDriveオブジェクトを返します
GetDriveName指定したドライブの名前を返します
GetExtensionNameファイルの拡張子を返します
GetFile指定したFileオブジェクトを返します
GetFileName指定したファイルの名前を返します
GetFolder指定したFolderオブジェクトを返します
GetParentFolderName指定したフォルダの親フォルダを返します
GetSpecialFolderシステムが使用する特別なフォルダのパスを返します
GetTempName一時的なファイル名を生成します
MoveFileファイルを移動します
MoveFolderフォルダを移動します
OpenTextFile指定したTextStreamオブジェクトを返します

2.ファイルの移動

書式は「FileSystemObject.MoveFile source, destination」と書きます。

コピーと違い、引数に「overwrite」を指定する事はできません。

引数の説明

source

移動元のファイルパスを指定します。

ワイルドカードを使用する事ができます。

sourceは省略する事ができません。

指定したファイルが存在しない場合、エラーが発生します。

destination

移動先のフォルダパスとファイル名を指定します。

ワイルドカードを使用する事ができず、省略もできません。

また、ファイル名まで指定する事で、ファイル名を別名にして移動ができます。

3.サンプルコード

移動元、移動先をフルパスで指定して移動する

移動元はファイル名までフルパスで指定して、移動先はフォルダパスまで指定します。

同一ファイル名が存在する場合や、移動元のファイル名が存在しない場合に、エラーとなり、メッセージが表示され処理を組み込みます。

On Error GoTo ErrLabel」でエラー発生時に、「ErrLabel:」にスキップしてエラーを回避します。

Sub Sample1()

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

On Error GoTo ErrLabel
    
    FSO.MoveFile Source:="C:\Sample1\TEST\Book1.xlsx", Destination:="C:\Sample1\TEST1\"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

End Sub

移動時にファイル名を変更する

ファイル名「Book1.xlsx」を移動時に「Book2.xlsx」に変更して移動します。

Sub Sample2()

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

On Error GoTo ErrLabel
    
    FSO.MoveFile Source:="C:\Sample1\TEST\Book1.xlsx", Destination:="C:\Sample1\TEST1\Book2.xlsx"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

End Sub

ワイルドカードで複数ファイルを一括で移動する

ファイル名にワイルドカードを使用する事で、一括でファイルを移動する事ができます。

Sub Sample3()

Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

On Error GoTo ErrLabel
    
    FSO.MoveFile Source:="C:\Sample1\TEST\*.xlsx", Destination:="C:\Sample1\TEST1\"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

End Sub
タイトルとURLをコピーしました