Macro tự nhận biết (Microsoft Excel)
Đối với một số macro, bạn có thể cần xác định xem có cách nào để xác định máy cụ thể mà macro đang hoạt động hay không. Ví dụ: bạn có thể có máy tính để bàn có thư mục cụ thể tại D: \ OraNT \ Plus33, trong khi máy tính xách tay của bạn có thư mục tại C: \ OraNT \ Plus33. Tất nhiên, macro cần phát hiện máy nào đang được sử dụng để nó biết sẽ sử dụng thư mục nào để xử lý.
Có nhiều cách khác nhau để tiếp cận nhiệm vụ này. Có thể tạo macro Excel thực sự truy cập API Windows và xác định tên của máy tính mà nó đang chạy. Tuy nhiên, một cách tiếp cận như vậy có thể khá liên quan.
Một cách dễ dàng hơn là chỉ cần sử dụng lệnh DIR của VBA để xác định vị trí tồn tại của thư mục mong muốn. Sau đây sẽ thực hiện thủ thuật:
Sub OracleQueries() Dim sTemp As String Dim sGoodPath As String sGoodPath = "D:\OraNT\Plus33\" sTemp = Dir("D:\OraNT\Plus33\nul") If sTemp = "" Then sGoodPath = "C:\OraNT\Plus33\" sTemp = Dir("C:\OraNT\Plus33\nul") End If 'Now have directory information If sTemp <> "" Then 'Process queries using sGoodPath Else MsgBox "Directories not found!" End If End Sub
Lưu ý cách hàm DIR được sử dụng trong ví dụ này. Thông thường DIR trả về tên của tệp đầu tiên mà nó tìm thấy trong thư mục được yêu cầu.
Tuy nhiên, nếu thư mục trống, DIR trả về một chuỗi trống – ngay cả khi thư mục thực sự tồn tại. Vì tất cả những gì chúng ta muốn làm là tìm xem thư mục có tồn tại hay không (chứ không phải nếu có tệp trong đó), nên cần phải nối thêm các chữ cái “nul” vào cuối đường dẫn thư mục được DIR sử dụng.
Điều này khiến DIR trả về một chuỗi trống nếu thư mục không được định vị, hoặc các ký tự “nul” nếu có (ngay cả khi thư mục trống).
Về cuối macro, sTemp sẽ trống nếu cả hai thư mục không thể được tìm thấy. Nếu một trong số chúng đã được định vị, thì sTemp sẽ không trống và sGoodPath sẽ được đặt thành tên thư mục có thể được sử dụng trong quá trình xử lý tiếp theo.
_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 (2607) á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: