1.将用到的文件做成一个INI文件列表. 内容如下: [FILE] TOTAL=3 File1=C:\test\1.exe File2=C:\test\2.wav File3=C:\test\3.txt代码: Option Explicit Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long '读取ini文件 Private Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, iniFileName As String) As String Dim ResultString As String * 144, Temp As Long Dim s As String, i As Integer Temp& = GetPrivateProfileString(SectionName, KeyWord, "", ResultString, 144, iniFileName) If Temp& > 0 Then s = "" For i = 1 To 144 If Asc(Mid$(ResultString, i, 1)) = 0 Then Exit For Else s = s & Mid$(ResultString, i, 1) End If Next End If GetIniS = s End Function '文件是否存在 Private Function File_Exsit(FilePath As String) As Long On Error GoTo errlst: Dim t As Long t = 0 t = FileLen(FilePath) File_Exsit = t Exit Function errlst: File_Exsit = 0 Err.Clear End Function '检查 Private Sub Command1_Click() Dim icount As String Dim nX As Integer Dim stemp As String Dim inifile As String inifile = "C:\test\4.ini" If Not File_Exsit(inifile) Then MsgBox "ini文件不存在" Exit Sub End If icount = GetIniS("FILE", "TOTAL", inifile) For nX = 1 To icount stemp = GetIniS("FILE", "FILE" & CStr(nX), inifile) If Not File_Exsit(stemp) Then MsgBox "文件" & stemp & "不存在" End If Next End Sub
1.将用到的文件先记录下来(可以做成一个INI文件列表(不推荐,因为可在外部修改ini文件)也可以用数组或集合记录数据) 2根据记录进行查找参考: Option Explicit Dim mFile() As StringPrivate Sub initmfile() '改成你需要的 ReDim mFile(10) mFile(0) = "0.txt" mFile(1) = "1.txt" mFile(2) = "2.txt" mFile(3) = "3.txt" mFile(4) = "4.txt" mFile(5) = "5.txt" mFile(6) = "6.txt" mFile(7) = "7.txt" mFile(8) = "8.txt" mFile(9) = "BB\9.txt" mFile(10) = "AA\10.txt" End SubPrivate Sub Form_Load() initmfile Dim searchfolder As String '要查找的目录 searchfolder = App.Path If VBA.Right(searchfolder, 1) <> "\" Then searchfolder = searchfolder + "\" End If Dim i As Long For i = 0 To UBound(mFile) If Dir(searchfolder + mFile(i)) = "" Then MsgBox "缺少文件:" + mFile(i) + ",程序不能运行" End End If Next End Sub
上面的程序中我使用的是相对路径,你用绝对路径也可以,你可以这么定义数组: Private Sub initmfile() '改成你需要的 ReDim mFile(10) mFile(0) = "c:\0.txt" mFile(1) = "c:\1.txt" ... mFile(9) = "c:\BB\9.txt" mFile(10) = "c:AA\10.txt" End Sub这么定义的话,循环体中就不能指定查找路径了,即改为: For i = 0 To UBound(mFile) If Dir(mFile(i)) = "" Then MsgBox "缺少文件:" + mFile(i) + ",程序不能运行" End End If Next 如果想用相对路径,又想从根目录查找的话 指定 searchfolder即可: 如: searchfolder="c:\"
if len(dir("C:\10.mve")) then msgbox "存在mve文件" if len(dir("C:\10.txt")) then msgbox "存在txt文件" if len(dir("C:\10.doc")) then msgbox "存在doc文件" if len(dir("C:\10.jpg")) then msgbox "存在jpg文件"
1.将用到的文件做成一个INI文件列表.
2.查找本目录.
3.读取INI与查找到的文件对比.
内容如下:
[FILE]
TOTAL=3
File1=C:\test\1.exe
File2=C:\test\2.wav
File3=C:\test\3.txt代码:
Option Explicit
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
'读取ini文件
Private Function GetIniS(ByVal SectionName As String, ByVal KeyWord As String, iniFileName As String) As String
Dim ResultString As String * 144, Temp As Long
Dim s As String, i As Integer
Temp& = GetPrivateProfileString(SectionName, KeyWord, "", ResultString, 144, iniFileName)
If Temp& > 0 Then
s = ""
For i = 1 To 144
If Asc(Mid$(ResultString, i, 1)) = 0 Then
Exit For
Else
s = s & Mid$(ResultString, i, 1)
End If
Next
End If
GetIniS = s
End Function
'文件是否存在
Private Function File_Exsit(FilePath As String) As Long
On Error GoTo errlst:
Dim t As Long
t = 0
t = FileLen(FilePath)
File_Exsit = t
Exit Function
errlst:
File_Exsit = 0
Err.Clear
End Function
'检查
Private Sub Command1_Click()
Dim icount As String
Dim nX As Integer
Dim stemp As String
Dim inifile As String
inifile = "C:\test\4.ini"
If Not File_Exsit(inifile) Then
MsgBox "ini文件不存在"
Exit Sub
End If
icount = GetIniS("FILE", "TOTAL", inifile)
For nX = 1 To icount
stemp = GetIniS("FILE", "FILE" & CStr(nX), inifile)
If Not File_Exsit(stemp) Then
MsgBox "文件" & stemp & "不存在"
End If
Next
End Sub
2根据记录进行查找参考:
Option Explicit
Dim mFile() As StringPrivate Sub initmfile()
'改成你需要的
ReDim mFile(10)
mFile(0) = "0.txt"
mFile(1) = "1.txt"
mFile(2) = "2.txt"
mFile(3) = "3.txt"
mFile(4) = "4.txt"
mFile(5) = "5.txt"
mFile(6) = "6.txt"
mFile(7) = "7.txt"
mFile(8) = "8.txt"
mFile(9) = "BB\9.txt"
mFile(10) = "AA\10.txt"
End SubPrivate Sub Form_Load()
initmfile
Dim searchfolder As String '要查找的目录
searchfolder = App.Path
If VBA.Right(searchfolder, 1) <> "\" Then
searchfolder = searchfolder + "\"
End If
Dim i As Long
For i = 0 To UBound(mFile)
If Dir(searchfolder + mFile(i)) = "" Then
MsgBox "缺少文件:" + mFile(i) + ",程序不能运行"
End
End If
Next
End Sub
Private Sub initmfile()
'改成你需要的
ReDim mFile(10)
mFile(0) = "c:\0.txt"
mFile(1) = "c:\1.txt"
...
mFile(9) = "c:\BB\9.txt"
mFile(10) = "c:AA\10.txt"
End Sub这么定义的话,循环体中就不能指定查找路径了,即改为:
For i = 0 To UBound(mFile)
If Dir(mFile(i)) = "" Then
MsgBox "缺少文件:" + mFile(i) + ",程序不能运行"
End
End If
Next
如果想用相对路径,又想从根目录查找的话
指定 searchfolder即可:
如:
searchfolder="c:\"
if len(dir("C:\10.txt")) then msgbox "存在txt文件"
if len(dir("C:\10.doc")) then msgbox "存在doc文件"
if len(dir("C:\10.jpg")) then msgbox "存在jpg文件"