Enable Disable Macro Protection

brettvba

MrExcel MVP
Joined
Feb 18, 2002
Messages
1,030
I have some code for turning off Macro protection in 2000 does any one have any code for office xp?


Option Compare Text
Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal lhKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal lhKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal lhKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Const REG_HEX As Long = 4 'Hex Key
Private Const HKEY_CURRENT_USER As Long = &H80000001


'Purpose : Enables or disables the macro virus alert by altering the security level in the registry.
'Inputs : lSecurityLevel 1, sets security to "Low" (disable virus alerts)
' 2, sets security to "Medium"
' 3, sets security to "High"

Function MacroSecurity2000(lSecurityLevel As Long) As Boolean
Dim sData As String, lRet As Long
Const csPath = "SoftwareMicrosoftOffice9.0ExcelSecurity", csValue = "Level"

If lSecurityLevel<= 3 And lSecurityLevel > 0 Then
On Error GoTo ErrFailed
RegCreateKey HKEY_CURRENT_USER, csPath, lRet
RegSetValueEx lRet, csValue, 0, REG_HEX, lSecurityLevel, 4
RegCloseKey lRet
MacroSecurity2000 = True
End If

Exit Function
ErrFailed:
MacroSecurity2000 = False
End Function
This message was edited by brettvba on 2002-02-21 11:52
 

Excel Facts

Can you AutoAverage in Excel?
There is a drop-down next to the AutoSum symbol. Open the drop-down to choose AVERAGE, COUNT, MAX, or MIN
Does this change the Security Level as though the user was doing it manually? I didn't think that was possible through VBA code. Does this mean you could change the users settings to Low Security so that it would automatically enable macros?

Thx.
 
Upvote 0
BrettVBA. have you been keeping this a neat little secret ?

does it work in excel 97? or is there something similar?
 
Upvote 0
One problem buddy boy.
The user will need to disable macros protection in order to run your code to disable macros protection. DUH!
 
Upvote 0
On 2002-06-18 22:58, Qroozn wrote:
BrettVBA. have you been keeping this a neat little secret ?

does it work in excel 97? or is there something similar?

No, it won't work in excel97...the Regestration key and the Bit to change are different.
 
Upvote 0
On 2002-06-18 23:28, Mo~yu wrote:
One problem buddy boy.
The user will need to disable macros protection in order to run your code to disable macros protection. DUH!

You can overcome this in a number of ways.
 
Upvote 0
This is the code for XP
and your right its not made to hack ppls computers so that they can't choose if they want macros enabled its just a useful piece of code!

I can lookup my 97 ver if you need it!

Rgds Brett

Option Compare Text
Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal lhKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal lhKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal lhKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Const REG_HEX As Long = 4 'Hex Key
Private Const HKEY_CURRENT_USER As Long = &H80000001


Function MacroSecurity2002(lSecurityLevel As Long) As Boolean
Dim sData As String, lRet As Long
Const csPath = "SoftwareMicrosoftOffice10.0ExcelSecurity", csValue = "Level"

If lSecurityLevel<= 3 And lSecurityLevel > 0 Then
On Error GoTo ErrFailed
RegCreateKey HKEY_CURRENT_USER, csPath, lRet
RegSetValueEx lRet, csValue, 0, REG_HEX, lSecurityLevel, 4
RegCloseKey lRet
MacroSecurity2002 = True
End If

Exit Function
ErrFailed:
MacroSecurity2002 = False
End Function

Sub changeit()
MacroSecurity2002 (1) 'changes to low
'Also note that 1,2 or 3 can be used low, medium and high security!
End Sub
This message was edited by brettvba on 2002-06-19 13:26
 
Upvote 0
This should do it for 97 untested as I don't have 97

Regards Brett

Option Compare Text
Option Explicit

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal lhKey As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal lhKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal lhKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Const REG_HEX As Long = 4 'Hex Key
Private Const HKEY_CURRENT_USER As Long = &H80000001
Function MacroSecurity97(bDisableVirusChecking As Boolean) As Boolean
Dim lData As Long, lRet As Long
Const csPath = "SoftwareMicrosoftOffice8.0ExcelMicrosoft Excel", csValue = "Options6"

On Error GoTo ErrFailed
If bDisableVirusChecking Then
lData = 0 'Disabled
Else
lData = 8 'Enabled
End If
RegCreateKey HKEY_CURRENT_USER, csPath, lRet
RegSetValueEx lRet, csValue, 0, REG_HEX, lData, 4
RegCloseKey lRet
MacroSecurity97 = True
Exit Function
ErrFailed:
MacroSecurity97 = False
End Function

Sub Change97()
MacroSecurity97 (True)
End Sub

_________________<MARQUEE scrollamount=8 behavior=alternate>
i-header-guide.jpg
</MARQUEE>
This message was edited by brettvba on 2002-06-19 13:23
 
Upvote 0

Forum statistics

Threads
1,213,538
Messages
6,114,220
Members
448,554
Latest member
Gleisner2

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top