【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]Cells or Range 【VBA】.Cells と .Range の使い分け目安|数千か数万か -

[VBA]Resizerows and columns 【VBA】Resize changes the size of a cell range|範囲のリサイズ -

[VBA]CSVに書き出す 【VBA】CSVに配列の中身を書き出す|ADODB.Stream -

[VBA]Dirで存在確認 【VBA】フォルダとファイルの存在確認|FSOよりもDir -

[VBA]get fso objectfrom path 【VBA】パスからfsoオブジェクトを取得する|fso.GetFolder/.GetFile -

時間計算のDateAdd 【VBA】DateAddで時間の足し算・引き算