利用FSO技术,使用GetFile函数时。
碰到储如c:\PAGEFILE.SYS会提示文件未找到。  Dim FileSys As New FileSystemObject, FileObj As File
  nnn = "c:\PAGEFILE.SYS"
执行下面语句出错,文件不存在。
  Set FileObj = FileSys.GetFile(Trim(nnn))
在MSDN帮助中的描述是如果指定的文件不存在,则发生一个错误。如果  nnn = "d:\chapter4\photo\1320051216141228166.JPG"
下面语句执行正确
  Set FileObj = FileSys.GetFile(Trim(nnn))
请问各位大侠,if如何写可以绕过
  nnn = "c:\PAGEFILE.SYS"产生错误
 不执行Set FileObj = FileSys.GetFile(Trim(nnn))对
  nnn = "d:\chapter4\photo\1320051216141228166.JPG"不出错时
执行正确的Set FileObj = FileSys.GetFile(Trim(nnn))

解决方案 »

  1.   

    把Set FileObj = FileSys.GetFile(Trim(nnn)) 改成if dir(Trim(nnn)) <> "" then
        Set FileObj = FileSys.GetFile(Trim(nnn)) 
    end if
      

  2.   

    解决方法如下
    关键要素是
          FileSys.FileExists(nnn) = True 文件是否存在?
    如果 FileSys As New FileSystemObject 判断存在 
           Set FileObj = FileSys.GetFile(Trim(nnn))
    Function OpenFileToOtherFile(SourceFile As String, OtherFile As String)
      
      Dim nnn, b() As String, bb() As String
      Dim FileSys As New FileSystemObject, FileObj As File
      Debug.Print SourceFile, OtherFile
      Open SourceFile For Input As #1
      Open OtherFile For Output As #2
      Write #2, "m1", "m2", "m3", "m4", "m5", "m6", "m7", "m8"
      FileLineCount = 1
      Do While Not EOF(1)
         Line Input #1, nnn
         If FileSys.FileExists(nnn) = True Then
           Set FileObj = FileSys.GetFile(Trim(nnn))
         With FileObj
           m1 = .Name
           m2 = LCase(Mid(nnn, InStrRev(nnn, ".") + 1))
           m2 = FileSys.GetExtensionName(nnn)
           m3 = .Size
           m4 = .DateCreated
           m5 = .DateLastAccessed
           m6 = .DateLastModified
           m7 = .Type
           m8 = .Path
           
         End With
         Write #2, m1, m2, m3, m4, m5, m6, m7, m8
         FileLineCount = FileLineCount + 1
       
         End If
       
       Loop
       Close #1
       Close #2End Function
      

  3.   

    楼主要打开C:\PAGEFILE.SYS这个文件不知用意何在?
    C:\PAGEFILE.SYS是Windows的虚拟内存文件,不允许任何进程对他操作的。
      

  4.   


    我用dir c:/s/b > dd.txt 生成文本文件时有很多诸如pagefile.sys的文件,用FSO提取文件的属性时(文件大小、日期和文件文件类型时)要用.GetFile函数,如果没有程序就出错。
    我的解决办法是.FileExists(文件名)函数判断这个文件名是否存在。
        If FileSys.FileExists(nnn) = True Then 
          Set FileObj = FileSys.GetFile(Trim(nnn)) 
        With FileObj 
    采用这个语句后,避免了程序在运行到.GetFile(文件名)时出错。