请问:如何判断文件是否被打开,不过不判断的话,会出现实时错误'70' 拒绝的访问
代码如下:
1    Dim fs As Object
2    Set fs = CreateObject("Scripting.FileSystemObject")
3    If fs.FileExists(fileName) Then
4       fs.DeleteFile fileName, True
5    End If
6    Set fs = Nothing如果此时我把文件打开,执行到第四行 fs.DeleteFile fileName, True 就会报实时错误
如何在这之前判断,此文件是否已经被打开呢或者如何 在执行到 fs.DeleteFile fileName, True  这一句时捕捉错误呢
像c语言一样的判断返回值,或者像java一样的try...catch(), 然后加上自己的提示信息。
用on error goto 好像也不行,请问高手这个怎么解决??

解决方案 »

  1.   

    Option ExplicitPrivate Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As String, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Const GENERIC_READ = &H80000000
    Private Const GENERIC_WRITE = &H40000000
    Private Const OPEN_EXISTING = 3
    Private Const FILE_ATTRIBUTE_NORMAL = &H80
    Private Const INVALID_HANDLE_VALUE = -1Private Function IsFileRun(ByVal pFile As String) As Boolean
        Dim Ret As Long
        Ret = CreateFile(pFile, GENERIC_READ Or GENERIC_WRITE, 0&, vbNullString, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0&)
        IsFileRun = (Ret = INVALID_HANDLE_VALUE)
        CloseHandle Ret
    End Function
    -----------------
    看程序是否运行。EXE、DLL、COM都行。TXT不行。