Gửi anh chị em GPE.
Mình cũng đang tìm hiểu lập trình VBA, hiện tại gặp tình huống khó là kiểm tra tự động Project VBA đã được đặt mật khẩu hay chưa. Anh chị em nào biết thì cho mình xin code này với nhé.
Cảm ơn anh chị em!
Gửi anh chị em GPE.
Mình cũng đang tìm hiểu lập trình VBA, hiện tại gặp tình huống khó là kiểm tra tự động Project VBA đã được đặt mật khẩu hay chưa. Anh chị em nào biết thì cho mình xin code này với nhé.
Cảm ơn anh chị em!
Trong trường hợp người ta đọc xong topic ấy mà vẫn không làm được thì sao? Như tôi chẳng hạn, tôi đọc xong topic bạn đưa ở trên mà không tìm thấy liên hệ nào với yêu cầu của tác giả topic này
Vậy sao bạn không đưa luôn một đoạn code gợi ý cho người ta?
---------------------------------------------------------------------------------
Gửi anh chị em GPE.
Mình cũng đang tìm hiểu lập trình VBA, hiện tại gặp tình huống khó là kiểm tra tự động Project VBA đã được đặt mật khẩu hay chưa. Anh chị em nào biết thì cho mình xin code này với nhé.
Cảm ơn anh chị em!
Việc này không hề dễ dàng gì đâu. Bởi giải thuật mà tôi có thể nghĩ ra là thế này:
- Tìm 1 code nào đó truy cập vào VBProject (Workbooks("Tên wb").VBProject.Name chẳng hạn) gọi là làm một phép thử
- Nếu như VBA Project có đặt password thì code trên sẽ bị lỗi
- Vậy từ đó ta suy ra ---> Nếu code trên bị lỗi thì nghĩa là VBA Project đã đặt password???
Nghe cũng có lý nhưng chuyện đời đôi lúc không đơn giản như ta nghĩ. Trong trường hợp mục "Trust access to the VBA project..." trong Excel Options chưa được check thì code trên cũng bị lỗi bất kể VBA Project có đặt password hay không? Hoặc trong trường hợp người ta dùng cách nào đó ẩn VBA Project (chứ không đặt password) thì code trên cũng lỗi
Vân... vân... hàng đống thứ khác nữa
Trên các diễn đàn nước ngoài cũng nhiều người hỏi vấn đề này và cũng có code tham khảo như sau:
Mã:
Function ProtectedVBProject(ByVal wb As Workbook) As Boolean
' returns TRUE if the VB project in the active document is protected
Dim VBC As Integer
VBC = -1
On Error Resume Next
VBC = wb.VBProject.VBComponents.Count
On Error Goto 0
If VBC = -1 Then
ProtectedVBProject = True
Else
ProtectedVBProject = False
End If
End Function
Tuy nhiên, như các nguyên nhân tôi nêu ở trên thì code tham khảo cũng chẳng có tác dụng gì
----------
Đây là hướng suy nghĩ của riêng tôi thôi. Đương nhiên có thể có ai đó tìm được cách khác giải quyết tốt vấn đề này? Tôi đang chờ học hỏi!
Cảm ơn anh ndu96081631 và anh Tuân.
Em tham khảo một số code trên mạng thì thấy muốn chạy ổn định phải bật "Trust Access to the VBA Project object model"
Nếu bật cái này lên thì xử lý được vấn đề, tuy nhiên hiện lại nảy sinh sang bài toán khác là bật/tắt "Trust Access to the VBA Project object model" bằng code.
Mong các anh chỉ giáo tiếp ạ.
Cảm ơn anh ndu96081631 và anh Tuân.
Em tham khảo một số code trên mạng thì thấy muốn chạy ổn định phải bật "Trust Access to the VBA Project object model"
Nếu bật cái này lên thì xử lý được vấn đề, tuy nhiên hiện lại nảy sinh sang bài toán khác là bật/tắt "Trust Access to the VBA Project object model" bằng code.
Mong các anh chỉ giáo tiếp ạ.
Muốn bật tắt cái đó buộc phải tạo một ứng dụng thứ 3 tác động vào Registry. Sẽ không gọn gàng kiểu viết trọn code trong một macro đâu. Tôi cũng chưa hiểu vì sao bạn muốn làm việc này?
Thì vẫn phải check mục "Trust access..." thì code mới đúng Tuân à.
Vấn đề sẽ xuất hiện nếu ta mang code hoặc file chứa code sang 1 máy tính khác.
Nói chung vấn đề này khá phiền phức