

- #Password protect macros in excel 64 Bit
- #Password protect macros in excel code
- #Password protect macros in excel password
- #Password protect macros in excel windows
#Password protect macros in excel windows
I'm running Excel 2010 64-Bit on 64-Bit Windows 7. I've built upon Đức Thanh Nguyễn's fantastic answer to allow this method to work with 64-bit versions of Excel. If you need to work with Excel 2007 or 2010, there are some other answers below which might help, particularly these: 1, 2, 3.ĮDIT Feb 2015: for another method that looks very promising, look at this new answer by Đức Thanh Nguyễn. Will simply be 1234 (as in the example I'm showing here).
#Password protect macros in excel password
Open the file you just created with a hex editor.Ĭopy the lines starting with the following keys: CMG=.įIRST BACKUP the excel file you don't know the VBA password for, then open it with your hex editor, and paste the above copied lines from the dummy file.Then check the file size - see Stewbob's gotcha In the VBA part, set a simple password (say - 1234).One method is to simply swap out the password entry in the file using a hex editor (see Hex editors for Windows). xlsx, which is a fairly secure format, and this method will not work.Īs Treb says, it's a simple comparison. xls format spreadsheet (the default for Excel up to 2003). Yes there is, as long as you are using a. MsgBox "VBA Project is unprotected!", vbInformation, "*****" End If End SubĬome back to your VBA Projects and enjoy. Paste this code under the above code in Module1 and run it Sub unprotected() MyDialogBoxParam = DialogBoxParam(hInstance, pTemplateName, _ Hook = True End If End If End Function Private Function MyDialogBoxParam( ByVal hInstance As Long, _īyVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer If pTemplateName = 4070 Then MoveMemory ByVal pFunc, ByVal VarPtr(HookBytes( 0)), 6 MoveMemory ByVal VarPtr(HookBytes( 1)), ByVal VarPtr(p), 4 MoveMemory ByVal VarPtr(OriginBytes( 0)), ByVal pFunc, 6 MoveMemory ByVal VarPtr(TmpBytes( 0)), ByVal pFunc, 6 If TmpBytes( 0) &H68 Then If VirtualProtect( ByVal pFunc, 6, PAGE_EXECUTE_READWRITE, OriginProtect) 0 Then PFunc = GetProcAddress(GetModuleHandleA( "user32.dll"), "DialogBoxParamA") If Flag Then MoveMemory ByVal pFunc, ByVal VarPtr(OriginBytes( 0)), 6 End Sub Public Function Hook() As Boolean Dim TmpBytes( 0 To 5) As Byte Dim p As Long Dim OriginProtect As Long Private Declare Function VirtualProtect Lib "kernel32" (lpAddress As Long, _īyVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long Private Declare Function GetModuleHandleA Lib "kernel32" ( ByVal lpModuleName As String) As Long Private Declare Function GetProcAddress Lib "kernel32" ( ByVal hModule As Long, _īyVal lpProcName As String) As Long Private Declare Function DialogBoxParam Lib "user32" Alias "DialogBoxParamA" ( ByVal hInstance As Long, _īyVal pTemplateName As Long, ByVal hWndParent As Long, _īyVal lpDialogFunc As Long, ByVal dwInitParam As Long) As Integer Dim HookBytes( 0 To 5) As Byte Dim OriginBytes( 0 To 5) As Byte Dim pFunc As Long Dim Flag As Boolean Private Function GetPtr( ByVal Value As Long) As Long (Destination As Long, Source As Long, ByVal Length As Long) Open the file(s) that contain your locked VBA ProjectsĬreate a new xlsm file and store this code in Module1Ĭode credited to Siwtom (nick name), a Vietnamese developer Option Explicit Private Const PAGE_EXECUTE_READWRITE = &H40 Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" _.The code below swaps the memory of the original function used to display the password dialog with a user defined function that will always return 1 when being called.if this value is 1, the VBE will "think" that the password is right, hence the locked VBA project will be opened.After the dialog box is closed, the VBE checks the returned value of the system function.If user enters the wrong password or click Cancel, this function returns 0. If user enters the right password and click OK, this function returns 1.The VBE will call a system function to create the password dialog box.I will try my best to explain how it works - please excuse my English.
#Password protect macros in excel 64 Bit
Looking for 64 bit version? See this answer How it works It will work for any files (*.xls, *.xlsm, *.xlam. You can try this direct VBA approach which doesn't require HEX editing.
