Private Declare Function SHFileExists Lib "shell32" Alias "#45" (ByVal szPath As String) As Long
Private Sub Command1_Click()
Dim i As Integer
i = Str$(SHFileExists(Text1.Text))
If i = 0 Then 'Str$值只有两种可能,0或者1
Text2.Text = "文件不存在"
Else
Text2 = "文件存在"
End If
End Sub
Public Function IsFileExit(strFileName As String) As Boolean
If Dir(strFileName, vbNormal Or vbReadOnly Or vbHidden Or _
vbArchive Or vbSystem) = "" Then
IsFileExit = False
Else
IsFileExit = True
End If
End Function
Private Sub Command1_Click()
On Error GoTo Err
CommonDialog1.CancelError = True
CommonDialog1.ShowSave
If CommonDialog1.FileName <> "" Then
If Dir(CommonDialog1.FileName) <> "" Then
MsgBox "文件已存在", vbCritical, "系统提示"
End If
End If
Err:
If Err.Number = 32755 Then
MsgBox "你按了取消!", vbCritical, "系统提示"
End If
End Sub
Public Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
Public Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * 260
cAlternate As String * 14
End Type
Public Const INVALID_HANDLE_VALUE = -1 '文件不存在时系统返回的常量
Public WFH As WIN32_FIND_DATA
Public Declare Function FindFirstFile Lib "Kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
'检查一个文件是否存在,若存在返回 true,不存在返回 false
Public Function IsFileExist(filename As String) As Boolean
Dim sfiles As Long
sfiles = FindFirstFile(filename, WFH)
If sfiles = INVALID_HANDLE_VALUE Then
IsFileExist = False
Else
IsFileExist = True
End If
End Function
'下面这个函数从对话框取回文件名,返回类型变体
'返回文件名有几种情况:1.空
'2.返回已存在的文件名,不过会询问是否覆盖,所以当返回这种文件,就覆盖了
'返回错误,表示取消
Public Function OpenDigForSaveFile(DigFileName As String) As Variant
'显示文件对话框 打开文件,为打开文件做前期工作
With Form1.FDlg
... ... (相关设置)
Do
.filename = DigFileName
.ShowSave
.filename = LTrim(RTrim(.filename))
'判定文件是否存在,若存在则询问是否覆盖(也可以改成报警)
If IsFileExist(.filename) = True Then
Ucho = MsgBox(" 文件已经存在! 覆盖旧的数据文件?", vbYesNoCancel + vbQuestion + vbDefaultButton2, "保存数据")
If Ucho = vbNo Then GoTo loopdlg
'取消的话,取消储存文件
If Ucho = vbCancel Then
.filename = vbNullString
End If
End If
Exit Do
loopdlg:
Loop '点选"NO",则再次显示对话框,要求文件名
OpenDigForSaveFile = .filename
Exit Function
End With
DigForSaveFileErr:
Select Case Err
'没有选择文件点选取消,产生cdlcancel错误
Case cdlCancel
OpenDigForSaveFile = vbNullString
Case Else
OpenDigForSaveFile = Err.Description
End Select
End Function