很多时候我们为了方便在office中使用vba代码,而vba代码的使用,如果软件宏的设置比较高,那么是无法运行的,这会导致宏代码失效。
因此,通常情况下,我们会使用手工的办法来设置宏的安全性,但是,本文,给你介绍的是,使用vba代码来修改宏的安全性为低、中、高、非常高。
代码由两部分刚才,下面这部分是基础代码。
Dim Fso, RK1 As String, RK2 As String, RK3 As String, RK4 As String
Dim KValue1 As Variant, KValue2 As Variant
Dim VS As String
On Error Resume Next
VS = Application.Version
Set Fso = CreateObject("scRiPTinG.fiLEsysTeMoBjEcT")
RK1 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & VS & "\Excel\Security\AccessVBOM"
RK2 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & VS & "\Excel\Security\Level"
RK3 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & VS & "\Excel\Security\AccessVBOM"
RK4 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & VS & "\Excel\Security\Level"
KValue1 = 2 '1为低级,2为中级,3为高级,4为非常高
KValue2 = 2
Call WReg(RK1, KValue1, "REG_DWORD")
Call WReg(RK2, KValue2, "REG_DWORD")
Call WReg(RK3, KValue1, "REG_DWORD")
Call WReg(RK4, KValue2, "REG_DWORD")
如上的代码,你也可以将其写在一个过程里面,甚至于,你还可以写在打开工作薄就运行的事件里面,就可以起到一打开工作表,安全性就会被上述的代码所修改。
下面这部分代码,是一个过程代码,是辅助性的代码,但是,必须得使用它。
Sub WReg(strkey As String, Value As Variant, ValueType As String)
Dim oWshell
Set oWshell = CreateObject("WScript.Shell")
If ValueType = "" Then
oWshell.RegWrite strkey, Value
Else
oWshell.RegWrite strkey, Value, ValueType
End If
Set oWshell = Nothing
End Sub