Chào các bác, em có 1 vấn đề muốn hỏi:
Đầu vào:
1 File được đặt VBProtect
Đầu ra:
Sub1: Xóa toàn bộ Module khi kích hoạt nút ấn (button)
Hướng giải quyết: (1) --> (2) --> (3)
(1): Chuyển tự động sang chế độ "Trust access to Visual Basic Project"
(2): Mở khóa VBProject.
(3): Xóa các Module
Tiếp đến là việc kết hợp 3 công đoạn trên như sau:
CÁCH 1:
Với việc kết hợp như CÁCH 1 này thì không thực hiện được việc đổi tình trạng sang "Trust access ..."
CÁCH 2:
Với việc kết hợp như CÁCH 1 này thì thực hiện được việc đổi tình trạng sang "Trust access ..." NHƯNG không mở pass VBProject được.
KẾT LUẬN:
- Vậy với cả 2 cách trên thứ tự đặt thủ tục không thay đổi, chỉ thay đổi về vị trí đặt các thủ tục thì cho ra kết quả khác nhau.
- Với cả 2 cách trên đều không thực hiện được mục đích yêu cầu đã đề cập là "Xóa toàn bộ Module khi kích hoạt nút ấn (button) trong file có đặt VBProtect" --> Nhờ hướng dẫn cách khắc phục
Nhờ các cao thủ chỉ giáo giúp
Đầu vào:
1 File được đặt VBProtect
Đầu ra:
Sub1: Xóa toàn bộ Module khi kích hoạt nút ấn (button)
Hướng giải quyết: (1) --> (2) --> (3)
(1): Chuyển tự động sang chế độ "Trust access to Visual Basic Project"
(2): Mở khóa VBProject.
(3): Xóa các Module
Mã:
'(1): Chuyển tự động sang chế độ "Trust access to Visual Basic Project"
Function IsVBATrusted() As Boolean
Dim VBC As Object
Application.DisplayAlerts = False
On Error Resume Next
Set VBC = ThisWorkbook.VBProject.VBComponents.Item(1)
On Error GoTo 0
Application.DisplayAlerts = True
IsVBATrusted = Not VBC Is Nothing
End Function
Sub TrustVBAPr()
If Not IsVBATrusted() Then
Application.SendKeys "%tmst"
Application.SendKeys "%vs{Enter}"
End If
End Sub
Mã:
'(2): Mở khóa VBProject.
Sub MKP()
UVBP ActiveWorkbook, "abc"
End Sub
'UVBP = UnprotectVBProject
Sub UVBP(WB As Workbook, ByVal Password As String)
Dim vbproj As Object
Set vbproj = WB.VBProject
Set Application.VBE.ActiveVBProject = vbproj
SendKeys Password & "~~"
Application.VBE.CommandBars(1).FindControl(Id:=2578, recursive:=True).Execute
SendKeys "%{F11}"
End Sub
Tiếp đến là việc kết hợp 3 công đoạn trên như sau:
CÁCH 1:
Mã:
Workbook_Open
TrustVBAPr()
MKP()
End Sub
Sub1
Các câu lệnh xóa Module
End Sub
CÁCH 2:
Mã:
Workbook_Open
TrustVBAPr()
End Sub
Sub1
MKP()
Cac cau lenh xoa Module
End Sub
KẾT LUẬN:
- Vậy với cả 2 cách trên thứ tự đặt thủ tục không thay đổi, chỉ thay đổi về vị trí đặt các thủ tục thì cho ra kết quả khác nhau.
- Với cả 2 cách trên đều không thực hiện được mục đích yêu cầu đã đề cập là "Xóa toàn bộ Module khi kích hoạt nút ấn (button) trong file có đặt VBProtect" --> Nhờ hướng dẫn cách khắc phục
Nhờ các cao thủ chỉ giáo giúp