Thử vầy xem:Em muốn vô hiệu hoá Security... trong Tools\Marco? AC thiết lập dùm em code nhé!
Sub DisableSecurity()
Dim Item As CommandBarControl
For Each Item In Application.CommandBars(1).Controls("Tools").Controls("Macro").Controls
If Item.Caption = "&Security..." Then Item.Enabled = False
Next
Application.CommandBars.FindControl(ID:=3627).Enabled = False
End Sub
Cám ơn sư phụ nhiều! Nhưng cho em hỏi thêm nhé! Đối với Office 2007 và 2010 sao lại không có tác dụng?Thử vầy xem:
PHP:Sub DisableSecurity() Dim Item As CommandBarControl For Each Item In Application.CommandBars(1).Controls("Tools").Controls("Macro").Controls If Item.Caption = "&Security..." Then Item.Enabled = False Next Application.CommandBars.FindControl(ID:=3627).Enabled = False End Sub
Sub Set_Security()
Dim obj, iLevel
Set obj = CreateObject("WScript.Shell")
iLevel = obj.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\Security\Level")
If iLevel > 1 Then
obj.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[B][COLOR=#ff0000]11.0[/COLOR][/B]\Excel\Security\Level", [B][COLOR=#ff0000]1[/COLOR][/B], "REG_DWORD"
MsgBox "Vi ly do ky thuat, chuong trinh phai tam thoat, Ban vui long mo lai!"
Application.DisplayAlerts = False
Application.Quit
End If
End Sub
Mình không hiểu code này thay đổi level trong Security... như thế nào? Bạn nói rõ hơn? Mình đã tạo 1 file add-in rùi nè...Đoạn code này có thể thay đổi Level của Security dù đang để ở mức cao, nhưng phải nằm trong file add-ins (xla), và phải khởi động lại Excel:
Có thể thay đổi Version của Excel và cấp độ của Security tuỳ ý.Mã:Sub Set_Security() Dim obj, iLevel Set obj = CreateObject("WScript.Shell") iLevel = obj.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\Security\Level") If iLevel > 1 Then obj.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\[B][COLOR=#ff0000]11.0[/COLOR][/B]\Excel\Security\Level", [B][COLOR=#ff0000]1[/COLOR][/B], "REG_DWORD" MsgBox "Vi ly do ky thuat, chuong trinh phai tam thoat, Ban vui long mo lai!" Application.DisplayAlerts = False Application.Quit End If End Sub
Mình đã làm rùi nhưng không thành công. Bạn tạo lại cho mình 1 add-in dùng cho office 2003 (mức Low) nhé! Cám ơn bạn nhiều!Trong code trên, biến iLevel cho ta cấp độ Level của Security. Level có các cấp độ 1,2,3,4 tương ứng với cấp độ Low, Medium, High và Very High của Security. Bạn chọn Security Level bằng tay rồi thí nghiệm với câu Msgbox iLevel là thấy.
Câu lệnh
obj.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\11.0\Excel\Security\Level", 1, "REG_DWORD"
sẽ điều chỉnh Security Level trong Regedit tùy thuộc vào số 1 hoặc 2 hoặc 3 hoặc 4 (màu đỏ ở trên). Số 11.0 chỉ phiên bản Ex, Bạn thử xem, mình không dùng 2007.
Bạn muốn nó tự chạy khi khởi động Excel thì Bạn phải gọi nó từ Sub Autpen hoặc đổi tên thủ tục trên thành Sub Autpen và phải được chọn trước trong mục Tools\Add-ins.. của Excel.Mình đã làm rùi nhưng không thành công. Bạn tạo lại cho mình 1 add-in dùng cho office 2003 (mức Low) nhé! Cám ơn bạn nhiều!
Sub Auto_Open()
Dim obj, iLevel, iVersion
iVersion = Application.Version
Set obj = CreateObject("WScript.Shell")
iLevel = obj.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\" & iVersion & "\Excel\Security\Level")
If iLevel > 1 Then
obj.RegWrite "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\" & iVersion & "\Excel\Security\Level", 1, "REG_DWORD"
MsgBox "Vi ly do ky thuat, chuong trinh phai tam thoat, Ban vui long mo lai!"
Application.DisplayAlerts = False
Application.Quit
End If
End Sub