CopyFile・CopyFolderメソッドは、ファイルやフォルダをコピーするメソッドです
コードコピー '上書きするコピー
bhFSO.CopyFile "ファイル拡張子までのパス", "コピー先のフォルダ名までのパス"
コードコピー '上書きしないコピー(既存がある場合はエラー発生)
bhFSO.CopyFile "パス文字列\*.txt", "\コピー先のフォルダ名までのパス", False
CopyFile(ファイルのコピー)
コードコピー '上書きするコピー
bhFSO.CopyFolder "元のフォルダパス", "コピー先のフォルダパス"
コードコピー '上書きしないコピー(既存がある場合はエラー発生)
bhFSO.CopyFolder "元のフォルダパス", "コピー先のフォルダパス", False
CopyFolder(フォルダのコピー)
FileSystemObjectを使用して、フォルダをコピーするには「CopyFolder」メソッド を使用し、ファイルをコピーするには「CopyFile」メソッド を使用します
FileSystemObjectでのコピーであれば、ワイルドカードにより対象を複数にして一括で処理を行うことができます また、フォルダのコピーに関しては、中にあるファイルも全てそのままコピーされるのでバックアップ処理にはうってつけです
メソッドの書式
引数(太字は必須引数)(2つのメソッドは引数が同じ) CopyFile source, destination , overwrite CopyFolder source, destination , overwrite
「source」 は対象となるファイルの絶対パス を指定します、ワイルドカードの使用が出来ます ので複数のファイルを一括で指定することが可能です
「destination」 はコピー先のフォルダ名までの絶対パス を指定します 上記2つの引数は必須で、指定したパスが見つからない場合はエラーが発生します 特にワイルドカード使用時は注意が必要です
「overwrite」 はコピー先に同名のファイルやフォルダがあった場合に上書きするかどうかの設定です。 省略可能で、省略時はTrueが指定され上書きが許可されます
ファイルは上書きされれば当然既存のものはなくなります フォルダに関しては差分が更新される形になります
コピー元に2つのファイルがある状態で、コピー先にその2つと別のファイルがあった場合は、重複するファイルが上書き されます重複していないファイルは削除されたりはせずそのままの状態 になります
つまり、コピーしてもコピー元と全く同じファイル内容にならない 可能性があるということです
完全にコピー元と同じ内容にする場合は、コピー先を一度削除してからコピーする ようにします 削除にはFileSystemObjectのDeleteFolderメソッドを使用します RmDirステートメントではフォルダ内にデータが存在すると削除が行えないのでFileSystemObjectのほうが便利です
コピーしたファイル・フォルダを変数に代入して扱う
コードコピー '上書きコピーしてそのファイルを変数に代入
Dim bhFSOFile As Object
Set bhFSOFile = bhFSO.CopyFile("ファイル拡張子までのパス", "コピー先のフォルダ名までのパス")
また、コピーしたファイルやフォルダにさらに処理を続ける場合は、このメソッドを変数に代入させることで利便性が上がります 取得させる場合は、関数のように引数を「()」で囲む ようにすればいいだけです