Hỏi về code kiểm tra một file đang mở hay đóng?

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xin chào mọi người.
Em có 2 file A.xls & B.xls trong cùng một thư mục.
Từ file A em muốn kiểm tra file B xem là đang đóng hay mở thì sử dụng code nào ạ?
Mong được giúp đỡ, Xin cám ơn!

Bạn thử với Hàm này:

Function IsWorkBookOpen(ByRef BookName As String) As Boolean
On Error Resume Next
IsWorkBookOpen = Not (Application.Workbooks(BookName) Is Nothing)
End Function

Và thủ tục kiểm tra như vầy:

Sub CheckWBO()
MsgBox IsWorkBookOpen("BookName.xls")
End Sub

Mấy cái code trên chẳng giúp được gì nếu người ta mở bằng 2 session khác nhau, thậm chí code nằm trong file đang mở bằng Excel 2007 còn file kiểm tra lại đang mở bằng Excel 2003 thì cũng.. tèo
Giải thuật của bài toán này là: Dùng code thử mở file, nếu bị lỗi tức là file đã mở và ngược lại

Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long
Private Declare Function lClose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long
Function IsFileOpen(FileName As String) As Boolean
  Dim hFile As Long, lastErr As Long
  hFile = -1
  hFile = lOpen(FileName, &H10)
  If hFile = -1 Then
    lastErr = Err.LastDllError
  Else
    lClose (hFile)
  End If
  IsFileOpen = (hFile = -1) And (lastErr = 32)
End Function

Cũng có thể dùng Scripting.FileSystemObhect thử Move file, nếu không move được nghĩa là file đang mở. Tuy nhiên cách này chỉ tạm dùng được trên Excel thôi chứ cũng có thể không chính xác (trong trường hợp file không mở nhưng cũng không Move được file vì những lý do của hệ thống)
Có thể tham khảo cách làm từ MS:
https://support.microsoft.com/kb/213383

www.giaiphapexcel.com/diendan/threads/h%E1%BB%8Fi-v%E1%BB%81-code-ki%E1%BB%83m-tra-m%E1%BB%99t-file-%C4%91ang-m%E1%BB%9F-hay-%C4%91%C3%B3ng.75116/#post460762

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm