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.MoveFolder 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.MoveFolder Source:="C:\Sample1\TEST", Destination:="C:\Sample1\TEST1\"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

End Sub

同一フォルダ名が存在する場合や、移動元のフォルダ名が存在しない場合に、エラーとなり、メッセージが表示されます。

移動時にフォルダ名を変更する

フォルダ名「TEST」を移動時に「Sample」に変更して移動します。

Sub Sample2()

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

On Error GoTo ErrLabel
    
    FSO.MoveFolder Source:="C:\Sample1\TEST", Destination:="C:\Sample1\TEST1\Sample"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

End Sub

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

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

Sample1フォルダ内の「TEST」を含むフォルダをSampleというフォルダに移動します。

Sub Sample3()

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

On Error GoTo ErrLabel
    
    FSO.MoveFolder Source:="C:\Sample1\TEST*", Destination:="C:\Sample1\Sample\"
    
    Exit Sub
    
ErrLabel:

    MsgBox Err.Description

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