“”hwc2ycy 的代码绕过VBA信任 直接让他灰掉了,后期只有代码才能打开(可以的话还原设置我手动还能操作)
但是本人愚钝,问题还是没有解决,特上附件 求解undefined
主要就是求一代码把这个勾去掉开启的时候自动去勾,谢谢一直关注我们的论坛精英,的支持和解答,在此谢谢各位
Sub removeref()
Dim ref
Dim refs As Object
On Error Resume Next '忽略错误
Set refs = ThisWorkbook.VBProject.References '当前工作簿工程引用中引用集合
If Err.Number <> 0 Then '检测是否打开VBA信任
'MsgBox "VBA信任选项未打开,请打开后再运行", vbInformation + vbOKOnly
Call TrustVBA(1) '开启VBA信任
Set refs = ThisWorkbook.VBProject.References '
End If
For Each ref In refs '遍历集合中的引用
Debug.Print ref.Description '输出引用描述,引用窗口中看到的即为描述
If ref.isbroken Then '检测引用的有效性
refs.Remove ref '无效则删除
End If
Next
Call TrustVBA(0) '关闭VBA信任
End Sub
Function TrustVBA(Optional ByVal KeyValue = 1)
Dim Key1 As String, Key2 As String, Key3 As String, Key4 As String
Dim KeyValue1, KeyValue2
Dim Version As String
On Error Resume Next
Version = Application.Version
Key1 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Version & "\Excel\Security\AccessVBOM"
Key2 = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Version & "\Excel\Security\Level"
Key3 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Version & "\Excel\Security\AccessVBOM"
Key4 = "HKEY_LOCAL_MACHINE\Software\Microsoft\Office\" & Version & "\Excel\Security\Level"
'AccessVBOM 允许访问VBA对象
Call WriteReg(Key1, KeyValue, "REG_DWORD")
Call WriteReg(Key2, KeyValue, "REG_DWORD")
Call WriteReg(Key3, KeyValue, "REG_DWORD")
Call WriteReg(Key4, KeyValue, "REG_DWORD")
End Function
Sub WriteReg(strkey As String, Value As Variant, ValueType As String)
Dim Wshell As Object
Set Wshell = CreateObject("WScript.Shell")
If ValueType = "" Then
Wshell.RegWrite strkey, Value
Else
Wshell.RegWrite strkey, Value, ValueType
End If
Set Wshell = Nothing
End Sub
代码确实删除不了,因为丢失了,引用的name均无法获取。
坐等高手解决。