今回は「FileSystemObject」オブジェクトを使用してファイルをコピーする方法をご説明します。
「FileSystemObject」オブジェクトとは、ドライブ、フォルダ、ファイルを操作する事ができるオブジェクトです。
「FileSystemObject」オブジェクトの使い方も併せてご説明します。
他のファイル/フォルダの操作は次の記事をご覧ください。
- FileSystemObjectでフォルダをコピー
- FileSystemObjectでファイルを移動
- 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.CopyFile source, destination[, overwrite]
引数の説明
【source】
コピー元のフォルダパスとファイル名を指定します。
フォルダパスを省略すると、カレントフォルダが指定されます。
【destination】
コピー先のフォルダパスとファイル名を指定します。
ファイル名を省略すると、sourceで指定したファイル名が指定されます。
また、フォルダパスを省略するとカレントフォルダが指定されます。
【overwrite】
コピー先に同一ファイル名が存在する場合に、True/Falseで上書きするか指定します。
Trueを指定すると上書きし、Falseを指定すると同じファイル名があるとエラーになります。
念のためエラー処理を組み込むことをおすすめします。
省略することが可能で、省略するとTrueが指定されます。
3.サンプルコード
コピー元、コピー先をフルパスで指定してコピーするコード
次のコードは同一ファイル名が存在する場合エラーとなり、メッセージが表示されます。
エラーを回避するために「On Error GoTo ErrLabel」でエラー発生時に、「ErrLabel:」にジャンプするコードを組み込みます。
エラー処理の詳細については「「On Error」でエラー処理」をご覧下さい。
Sub Sample1()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
On Error GoTo ErrLabel
FSO.CopyFile Source:="C:\Sample\Book1.xlsx", Destination:="C:\Sample\Book2.xlsx", overwritefiles:=False
Exit Sub
ErrLabel:
MsgBox Err.Description
End Sub
エラーとなった場合次のようなメッセージが表示されます。
カレントフォルダを指定してコピーするコード
カレントフォルダの指定方法
共有ネットワークでも「.CurrentDirectory = “C:\Sample\”」でカレントフォルダを指定しています。
本来カレントフォルダの指定は「ChDirプロパティ」を使用しますが、共有ネットワーク上のフォルダに対応できるように「CreateObject(“WScript.Shell”)」を使用しています。
次のように記述して指定します。
With CreateObject("WScript.Shell")
.CurrentDirectory = "C:\Sample\"
End With
コピーするサンプルコード
カレントフォルダを指定してコピーするサンプルコードです。
Sub Sample2()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
With CreateObject("WScript.Shell")
.CurrentDirectory = "C:\Sample\"
End With
On Error GoTo ErrLabel
FSO.CopyFile Source:="Book1.xlsx", Destination:="Book2.xlsx", overwritefiles:=False
Exit Sub
ErrLabel:
MsgBox Err.Description
End Sub