Macro thường được sử dụng để cắt, xúc xắc và xử lý thông tin có trong sổ làm việc. Tất nhiên, điều này giả định rằng sổ làm việc có chứa thông tin thực sự đang mở. Nếu không, thì macro của bạn rõ ràng sẽ cần bao gồm mã để thực sự mở sổ làm việc cần thiết.

Mở một sổ làm việc thực sự có thể làm chậm macro; cần thời gian để truy cập đĩa và tải tệp. Do đó, nếu macro của bạn có thể kiểm tra xem sổ làm việc có đang mở hay không trước khi trải qua những rắc rối khi thực sự cố gắng mở nó, bạn có thể tăng tốc macro của mình lên rất nhiều nếu sổ làm việc được phát hiện đã mở.

Một cách rất linh hoạt để tiếp cận nhiệm vụ kiểm tra xem sổ làm việc có đang mở hay không là sử dụng một hàm thực hiện việc kiểm tra và sau đó chỉ cần trả về giá trị TRUE hoặc FALSE dựa trên việc sổ làm việc đang mở. Macro ngắn sau thực hiện tác vụ ngắn gọn này:

Function AlreadyOpen(sFname As String) As Boolean     Dim wkb As Workbook     On Error Resume Next     Set wkb = Workbooks(sFname)

AlreadyOpen = Not wkb Is Nothing     Set wkb = Nothing End Function

Để sử dụng hàm, chỉ cần chuyển nó vào tên của sổ làm việc bạn muốn kiểm tra, theo cách sau:

sFilename = "MyFileName.xls"

sPath = "C:\MyFolder\MySubFolder\"

If AlreadyOpen(sFilename) Then         'Do not have to open     Else         Workbooks.Open sPath & sFilename     End If

_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 (3104) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: