フォルダをコピー(CopyFolder メソッド)
FileSystemObject(FSO)を使用して、指定したフォルダとその内容全てをコピーします。FileSystemObject(FSO)のインスタンスを生成する方法は、ファイルシステムオブジェクト(FileSystemObject)の使い方 を参照してください。
object.CopyFolder ( source, destination [, overwritefiles ] )
引数・戻り値
- object ・・・ FileSystemObject オブジェクトを指定します。
- source ・・・ コピー元フォルダを文字列で指定します。ワイルドカードを使用することも可能です。
- destination ・・・ コピー先のパスを文字列で指定します。
- overwrite ・・・ 既存のフォルダーを上書きする場合、True、上書きしない場合は、False を指定します。既定値は True です。
引数 source にワイルドカード文字が含まれていたり、destination がパスの区切り文字「\」で終わっている場合、destination が既存のフォルダと見なされ、一致するフォルダとその内容がそこにコピーされます。
それ以外の場合は、source で指定されたフォルダとその内容は、新規に作成された destination にコピーされます。
destination が既存のファイルの場合は、エラーが発生します。
source に含まれているファイルと同名のファイルが destination に存在する場合は、overwrite が False に設定されているとエラーが発生し、設定されていないと既存のファイルが上書きされます。
destination が読み取り専用ディレクトリで、overwrite が False の場合、既存の読み取り専用のファイルをそのディレクトリにコピーしようとするとエラーが発生します。
source でワイルドカード文字を使用した場合、一致するフォルダが 1 つもない場合にはエラーが発生します。
CopyFolder メソッドは、最初のエラーが発生した時点で中止されます。エラーが発生する前に行われた変更はロールバックされません。
CopyFolder メソッド 使用例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub Sample_FSO_CopyFolder() 'フォルダをコピー Dim fso As New FileSystemObject Dim TargetFolder As String Dim DestFolder As String 'コピー元フォルダ TargetFolder = "C:\Documents\data2\aaa" 'コピー先フォルダ(新規に作成) DestFolder = "C:\Documents\data2\bbb" fso.CopyFolder Source:=TargetFolder, Destination:=DestFolder End Sub |
実行結果
C:\Documents\data2 には、「aaa」フォルダのみが存在しその中にはテキストファイルが含まれています。この状態で、サンプルVBAソースを実行します。
実行前の「C:\Documents\data2 フォルダ」の内容
実行後の「C:\Documents\data2 フォルダ」の内容