Option Explicit
#If VBA7 Then
Declare PtrSafe Function CopyFile Lib "kernel32" Alias "CopyFileW" (ByVal lpExistingFileName As LongPtr, ByVal lpNewFileName As LongPtr, ByVal bFailIfExists As Long) As Long
Declare PtrSafe Function MyMsgBoxAlias Lib "user32" Alias "MessageBoxW" (ByVal hwnd As LongPtr, ByVal lpText As LongPtr, Optional ByVal lpCaption As LongPtr, Optional ByVal wType As Long = 0) As Long
#Else
Declare Function CopyFile Lib "kernel32" Alias "CopyFileW" (ByVal lpExistingFileName As Long, ByVal lpNewFileName As Long, ByVal bFailIfExists As Long) As Long
Declare Function MyMsgBoxAlias Lib "user32" Alias "MessageBoxW" (ByVal hwnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, Optional ByVal wType As Long=0) As Long
#End If
Public Sub FileCopyW(SourceFile As String, DestinationFile As String, ByVal OverWrite As Boolean)
If CopyFile(StrPtr(SourceFile), StrPtr(DestinationFile), CLng(Not OverWrite)) = 0 Then
Select Case Err.LastDllError
Case 2
MsgBox "Wrong File Name.", vbCritical
Case 3
MsgBox "Wrong Path.", vbCritical
Case 80
If MyMsgBox("The file : (" & DestinationFile & ")" & vbCrLf & "Already exists." & vbCrLf & _
vbCrLf & "Do you want to overwrite it ? ", vbYesNo + vbExclamation + vbSystemModal) = vbYes Then
Call CopyFile(StrPtr(SourceFile), StrPtr(DestinationFile), 0)
End If
End Select
End If
End Sub
Public Function MyMsgBox(ByVal Prompt As String, Optional ByVal Buttons As VbMsgBoxStyle, Optional ByVal Title As String = vbNullChar) As VbMsgBoxResult
MyMsgBox = MyMsgBoxAlias(0, StrPtr(Prompt), StrPtr(Title), Buttons)
End Function