BOOL CopyFile(LPCTSTR SrcFile, LPCTSTR DestFile, BOOL Exists);
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" ( _ ByVal SrcFile As String, _ ByVal DestFile As String, _ ByVal Exists As Long) As Long
ファイル名の指定は、ディレクトリ名だけであってはならず、ファイルの絶対パス名、または相対パス名を指定しなければならない。
ファイルの属性もコピーされる。セキュリティ属性はコピーされない。
引数の意味は、以下の通り。
| SrcFile | コピー元ファイル名 |
| DestFile | コピー先ファイル名 |
| Exists | コピー先にsDestFileと同名のファイルが存在したとき、上書きに失敗するか否かを表すフラグ。TRUEならば、上書きに失敗する。 |
戻り値は、関数の実行に成功したか否かを表す真偽値である。
主なエラーは、以下の通り。
| ERROR_FILE_NOT_FOUND | ファイル名が誤っている。 |
| ERROR_PATH_NOT_FOUND | 存在しないディレクトリを指定した。 |
| ERROR_FILE_EXISTS | 同名ファイルがすでに存在する |
| ERROR_NOT_READY | ドライブの準備ができていない |
| 1235 | ドライブのアクセスに失敗した |
| ERROR_ACCESS_DENIED | ディレクトリ名しか指定していない。 |
/* c:\doc\aaa.txtをc:\backup\にコピーする
void DoCopyFile()
{
CopyFile("c:\\doc\\aaa.txt", "c:\\backup\\aaa.txt", FALSE);
}
' a:\doc\aaa.txtをa:\backup\に、拡張子bakでコピーする
Private Sub DoCopyFile()
Dim bResult As Long
'ファイルのコピー
bResult = CopyFile("a:\doc\aaa.txt", "a:\backup\aaa.bak", True)
If bResult = 0 Then 'コピー失敗
MsgBox "エラー発生"
If Err.LastDllError = ERROR_FILE_EXISTS Then
MsgBox "コピー先に既にファイルが存在する"
End If
Else
MsgBox "コピー成功"
End If
End Sub