【VBA】ブックを複製する|fso.CopyFile
作成日:2022-12-02
更新日:2025-10-05

ブックを複製し、指定のフルパスへ保存する
'-----------------------------------------
' Copy file with overwrite option and error handling
' ファイルコピー(上書き許可オプション付き・エラーハンドリング)
'-----------------------------------------
Public Function CopyBook( _
ByVal srcPath As String, _
ByVal dstPath As String, _
Optional ByVal overwrite As Boolean = False) As Boolean
On Error GoTo ErrHandler
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(srcPath) Then Exit Function
If fso.FileExists(dstPath) Then
If Not overwrite Then Exit Function
fso.DeleteFile dstPath, True
End If
fso.CopyFile srcPath, dstPath, True
CopyBook = True
Exit Function
ErrHandler:
CopyBook = False
End Function- 存在確認|FileExistsで保証
- overwrite指定|上書きするかどうかを選ぶ
- 戻り値 Boolean|成功/失敗を呼び出し側で判定する
Example usage | 使用例
If Not CopyBook("C:\tmp\src.xlsx", "C:\tmp\dst.xlsx", True) Then
MsgBox "コピーに失敗しました"
End If

FSOはシングルトンで使おう
Referenced Insights & Citations
- Microsoft Docs: FileCopy statement
- Microsoft Docs: FileSystemObject.CopyFile method
| FileCopy|ファイルコピー |
| Overwrite|上書き |
| Error Handling|エラーハンドリング |
| FileSystemObject|ファイルシステムオブジェクト |
| Boolean Return|真偽値戻り値 |
Always control overwrite
and error handling
when copying files.
and error handling
when copying files.
2022-12-02
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-

[VBA]buttonに何が登録されてるか 【VBA】ボタンに登録されているマクロ名を調べたい -

dictionaryをセットする 【VBA】Dictionaryのセット|CreateObject(“Scripting.Dictionary”) -

[VBA]SaveAs名前を付けて保存 【VBA】名前を付けて保存|SaveAs -

[VBA]開いていたら閉じる 【VBA】指定のブックが開いていたら閉じる -

Excelテーブル最終行に値を追加 【VBA】Excelのテーブルの最終行に値を追加する -

[VBA]fsoSingleton pattern 【VBA】FSO(“Scripting.FileSystemObject”)|シングルトン化して使う