我有一个文件是多个程序在使用,但在同一时间只能有一个程序使用,如何判断文件是否在使用?
急等呀!

解决方案 »

  1.   

    '直接调用即可
    Public Function IsFileOpen(sFile As Variant) As Boolean
        Dim fFile As Integer
        Dim msg As String
        fFile = FreeFile()
        On Error GoTo ErrOpen
        Open sFile For Binary Lock Read Write As fFile
          Close fFile
        Exit Function
    ErrOpen:    If Err.Number <> 70 Then
            msg = "Error # " & Err.Number & " was generated by " _
               & Err.Source & Chr(13) & Err.Description
            MsgBox msg, , "Error", Err.HelpFile, Err.HelpContext
        Else
            IsFileOpen = True
        End If
    End Function
      

  2.   

    我知道如何判定excel是否打开
    ◆若判断EXCEL或某个XLS文件是否已经打开(避免不可预知的错误发生):
    LOCAL lOldSetOpt,mChanNum
    lOldSetOpt = DDESetOption("SAFETY")
    = DDESetOption("SAFETY",.F.)
    mChanNum = DDEInitiate('Excel','SYSTEM')    &&EXCEL是否已经打开
    **mChanNum = DDEInitiate('Excel','&lcFileName')    &&lcFileName某XLS文件名,如:D:\123.XLS
    IF mChanNum <> -1
       = messagebox('程序 EXCEL 已经打开,请先将其关闭!',64,'系统提示!')
    **   = messagebox('文件 '+lcFileName+' 已经打开,请先将其关闭!',64,'系统提示!')
       = DDETerminate(mChanNum) 
       = DDESetOption("SAFETY",lOldSetOpt)
       RETURN
    ENDIF
      

  3.   


    写了个判断文件是否被锁定的函数 --- 有用!http://blog.csdn.net/tanaya/archive/2004/09/03/93571.aspx
      

  4.   

    以下代码调试通过,支持多种类型的文件,直接调用即可
    --------------------------------
    '引用Microsoft Scripting Runtime
    Private Sub Command1_Click()
        Dim filePath As String
        filePath = "D:\myWork\Test\新建 文本文档.txt"
        If IsFileOpen(filePath) Then MsgBox "文件已经打开!"
    End SubPublic Function IsFileOpen(sFile As Variant) As Boolean
        IsFileOpen = False
        Dim openFile As New FileSystemObject, ExName As String, targetFileName As String
        If Not openFile.FileExists(sFile) Then
            MsgBox "文件不存在!"
            Exit Function
        End If
        ExName = openFile.GetExtensionName(sFile)
        targetFileName = "c:\temp." & ExName
        On Error GoTo ErrOpen
        openFile.MoveFile sFile, targetFileName
        openFile.MoveFile targetFileName, sFile
        Debug.Print targetFileName
        Exit Function
    ErrOpen:
        IsFileOpen = True
    End Function