ファイルのコピーする処理を関数化。
既に同じファイルがある場合、上書き確認を行います。
ファイルが開いている場合にはエラーが発生するため、エラー処理も行っています。
送信先のファイル名を変更することができます。
' ------------------------------------------------------------
' 説明:ファイルのコピー(上書き確認)
' 引数:1:コピー元のファイル名
' 2:コピー先のファイル名
' 備考:既にファイルがある場合は確認ダイアログが表示されます
' エラーが発生した場合は、エラーの詳細情報が表示されます
' ------------------------------------------------------------
Sub FileCopyOwConfirm(SourceFilename, DestinationFilename)
Dim fso As Scripting.FileSystemObject
Dim result As Integer
' オブジェクトを作成
Set fso = New Scripting.FileSystemObject
' エラー発生時の処理
On Error GoTo ErrorProc
' コピー元のファイルが無い場合 → 終了
If fso.FileExists(SourceFilename) = False Then
MsgBox "コピー元のファイルが存在しません。", vbExclamation, "FileCopyOwConfirm"
Set fso = Nothing
Exit Sub
End If
' コピー先にファイルが有る場合 → 確認 → 上書きしない場合は終了
If fso.FileExists(DestinationFilename) = True Then
result = MsgBox("コピー先にファイルが存在します。上書きしますか?", vbQuestion + vbYesNo, "FileCopyOwConfirm")
If result = vbNo Then
' コピーしない場合
Set fso = Nothing
Exit Sub
End If
End If
' ファイルのコピー処理(True で上書き)
fso.CopyFile SourceFilename, DestinationFilename, True
Set fso = Nothing
Exit Sub
' エラー処理
ErrorProc:
MsgBox "エラーが発生しました。 (" & Err.Number & ")" & vbCrLf & "内容: " & Err.Description, vbExclamation, "FileCopyOwConfirm"
Set fso = Nothing
End Sub
【補足】
Scripting.FileSystemObject を使用しています。
初期設定では、エラーが発生するので、参照設定「Microsoft Scripting Runtime」の設定が必要です。

コメント