【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]extract the filename 【VBA】フルパスからファイル名と拡張子を取得する -

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

数値に+ 記号を追加 【VBA】正の数値に+記号を追加|Sgn -

[VBA]Merge1D Arrays 【VBA】一次元配列と一次元配列を結合する -

[VBA]Auto DiffHTML Output 【VBA】WinMergeでファイルを自動比較&HTMLレポート出力|AIより手軽 -

[VBA]Reset filtersand outlines 【VBA】オートフィルタ解除&非表示を表示する|.FilterMode/.Outline