Brian có một sổ làm việc phức tạp, mở các sổ làm việc hỗ trợ khác rất nhanh và sau đó đóng chúng lại, lưu các thay đổi. Anh ta có một văn phòng với ba người sử dụng macro của anh ta và đôi khi họ xảy ra xung đột khi hai người đang cố gắng để có được mua order

số cùng một lúc. Điều này khiến sổ làm việc PO mở ở chế độ ‘chỉ đọc’ trong lần xuất hiện thứ hai, điều này gây nhầm lẫn cho người dùng. Brian tự hỏi liệu có một dòng mã VBA sẽ dừng lệnh ‘mở sổ làm việc’ nếu sổ làm việc đích đã được mở bởi một người dùng khác. Bằng cách đó anh ta có thể nắm bắt được các vấn đề tiềm ẩn trước khi chúng xảy ra.

Việc có mã của bạn sẽ dễ dàng hơn nhiều, sau khi mở, hãy kiểm tra xem sổ làm việc có được mở ở chế độ chỉ đọc hay không. Nếu nó đã xảy ra, thì bạn có thể thực hiện một hành động phù hợp với tình huống của bạn. (Ví dụ: bạn có thể đóng sổ làm việc, đợi một khoảng thời gian ngắn và thử lại thao tác và kiểm tra.) Đây là cách bạn có thể kiểm tra để xem trạng thái chỉ đọc:

Set wkBook1 = Workbooks.Open("c:\MyBigBook.xlsx")



If wkBook1.ReadOnly Then     wkBook1.Close False End If

Lưu ý rằng nó là thuộc tính ReadOnly mang lại thông tin mong muốn. Nếu bạn cần kiểm tra tệp trước thời hạn, bạn có thể thử sử dụng một số câu lệnh truy cập tệp có sẵn trong VBA. Đó là những gì chức năng sau đây làm.

Function FileIsLocked(strFileName As String) As Boolean     FileIsLocked = False     On Error Resume Next     Open strFileName For Binary Access Read Write Lock Read Write As #1     Close #1

' If an error occurs, the document is currently open     If Err.Number <> 0 Then        FileIsLocked = True        Err.Clear     End If End Function

Để sử dụng hàm, hãy chuyển cho nó tên (bao gồm cả đường dẫn đầy đủ) của sổ làm việc bạn muốn kiểm tra. Hàm trả về True nếu tệp bị khóa và False nếu không. Tuy nhiên, hãy nhớ rằng từ thời điểm hàm này kiểm tra tệp cho đến khi bạn thực sự cố gắng mở tệp, nó có thể đã được mở bởi người khác. Do đó, cách tiếp cận đầu tiên (kiểm tra sau khi cố gắng mở) có thể là cách tốt nhất để sử dụng.)

Cũng cần lưu ý rằng bạn cũng có thể lưu các sổ làm việc khác dưới dạng sổ làm việc dùng chung. Điều này sẽ cho phép nhiều người dùng mở chúng mà không gặp vấn đề gì. Tất nhiên, bạn sẽ muốn kiểm tra xem phương pháp này ảnh hưởng như thế nào đến dữ liệu bạn có thể muốn lưu trong sổ làm việc.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (5831) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365.