Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to mask excel macro code

I have the below stored in excel macro:-

Sub Sales()

Dim StrSQl As String

Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"

Set Db = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.recordset")
Db.connectionSTring = Con
Db.Open
StrSQl = "select myuc, sum (myac) as Amount from myabc.myqwerty where mydt >= 20100101 and mydt <= 20100831 group by (mycl)"
rs.Open StrSQl, Db, 3, 3
Sheet1.Cells(10, 1).CopyFromRecordset rs
rs.Close
Set rs = Nothing
Set cn = Nothing
End Sub

I wish to mask the above User ID & Password ie. User Id=****;Password=***** as part of security.

Is that possible?

like image 473
Bob Avatar asked Mar 05 '12 02:03

Bob


People also ask

Can you hide VBA code in Excel?

Yes. In the VBA main menu, click on Tools | VBAProject Properties and under the tab "Protection", Check the box "Lock project for viewing" and enter the password. Save and exit the Excel file. When you open it next the code will be hidden.

How do I create a mask in Excel?

Right-click the cell where you want to create a mask input (here, cell B2), and choose Format Cells… 2. In the Format Cells window, (1) choose Custom category, (2) enter #”:”00 in the Type box, and (3) click OK. Now, you can enter only numbers for time (here, 450), and Excel will format it as 4:50.


2 Answers

Your most secure option - regardless of whether the user needs to type a password in or not - is to protect your entire macro code

  • Enter the Visual Basic Editor (VBE)
  • select the project you wish to protect in the Project Explorer window
  • right cliick then ....VBAProject Properties
  • click the Protection tab and then check "Lock project from viewing" and verify your password
  • Save your workbook, close it and re-open it to establish the protection

Short of writing a COM addin this is secure as your code will get. Be warned that there are products available that will crack VBA code

enter image description here

like image 135
brettdj Avatar answered Sep 19 '22 20:09

brettdj


Con = "Provider=IBMDA400;Data Source=192.168.2.2;User Id=boss;Password=1we56"

AARRGGHH!! What are you thinking?

Here's the deal. No amount of encryption is going to help you out here because, if Excel itself can unencrypt the data (and it can, otherwise the connection could never be made), then a malicious type can also do it.

The right way to do this is to ask the user for the user ID and password and use that information to dynamically construct the connection string.

That way, the sensitive information exists only in the head of the user and (temporarily) on the machine they're using (which is probably their machine anyway). It's not in an Excel spreadsheet somewhere that anyone can get at.

And, on top of that, functional IDs (shared amongst different users) are almost always a bad idea since it makes auditing a nightmare.

like image 27
paxdiablo Avatar answered Sep 16 '22 20:09

paxdiablo