Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lock down Microsoft Excel macro

Tags:

I've spent some time writing an Excel Macro that is potentially worth money to a lot of companies.

How can I lock down the macro to prevent people seeing the source / forwarding to other people?

Thanks

like image 349
Dave Avatar asked Jul 20 '11 11:07

Dave


People also ask

How do I unlock a macro in Excel?

Step 1: In the File tab, click “options.” Step 2: In the “Excel options” dialog box, click “trust center settings” in the “trust center” option. Step 3: In the “macro settings” option, select “enable all macros.” Click “Ok” to apply the selected macro settings.


2 Answers

Protect/Lock Excel VBA Code:

When we write VBA code it is often desired to have the VBA Macro code not visible to end-users. This is to protect your intellectual property and/or stop users messing about with your code. Just be aware that Excel's protection ability is far from what would be considered secure. There are also many VBA Password Recovery [tools] for sale on the www.

To protect your code, open the Excel Workbook and go to Tools>Macro>Visual Basic Editor (Alt+F11). Now, from within the VBE go to Tools>VBAProject Properties and then click the Protection page tab and then check "Lock project from viewing" and then enter your password and again to confirm it. After doing this you must save, close & reopen the Workbook for the protection to take effect.

(Emphasis mine)

Seems like your best bet. It won't stop people determined to steal your code but it's enough to stop casual pirates.

Remember, even if you were able to distribute a compiled copy of your code there'd be nothing to stop people decompiling it.

like image 155
Brian Beckett Avatar answered Oct 15 '22 00:10

Brian Beckett


Just like you can password protect workbooks and worksheets, you can password protect a macro in Excel from being viewed (and executed).

Place a command button on your worksheet and add the following code lines:

  1. First, create a simple macro that you want to protect.

    Range("A1").Value = "This is secret code"

  2. Next, click Tools, Then VBAProject Properties...

enter image description here

Click Tools, VBAProject Properties...

  1. On the Protection tab, check "Lock project for viewing" and enter a password twice.

enter image description here

Enter a Password Twice

  1. Click OK.

  2. Save, close and reopen the Excel file. Try to view the code.

enter image description here

The following dialog box will appear:

Password Protected from being Viewed

You can still execute the code by clicking on the command button but you cannot view or edit the code anymore (unless you know the password). The password for the downloadable Excel file is "easy".

  1. If you want to password protect the macro from being executed, add the following code lines:
Dim password As Variant password = Application.InputBox("Enter Password", "Password Protected")  Select Case password     Case Is = False         'do nothing     Case Is = "easy"         Range("A1").Value = "This is secret code"     Case Else         MsgBox "Incorrect Password" End Select 

Result when you click the command button on the sheet:

enter image description here

Password Protected from being Executed

Explanation: The macro uses the InputBox method of the Application object. If the users clicks Cancel, this method returns False and nothing happens (InputBox disappears). Only when the user knows the password ("easy" again), the secret code will be executed. If the entered password is incorrect, a MsgBox is displayed. Note that the user cannot take a look at the password in the Visual Basic Editor because the project is protected from being viewed

like image 36
shareef Avatar answered Oct 14 '22 22:10

shareef