如何使程序一开始就检测根目录下的文件齐不齐.具体到某个文件!

解决方案 »

  1.   


    1.将用到的文件做成一个INI文件列表.
    2.查找本目录.
    3.读取INI与查找到的文件对比.
      

  2.   

    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
      

  3.   

    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
      

  4.   

    上面的程序中我使用的是相对路径,你用绝对路径也可以,你可以这么定义数组:
    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:\"
      

  5.   

    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文件"