如何屏蔽excel宏代码

时间:2012-03-05 02:46:50

标签: excel vba excel-vba password-protection

我在excel宏中存储了以下内容: -

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

我希望屏蔽上述用户ID&amp;密码即。 User Id=****;Password=*****作为安全的一部分。

这可能吗?

2 个答案:

答案 0 :(得分:11)

您最安全的选择 - 无论用户是否需要输入密码 - 都是为了保护您的整个宏代码

  • 输入Visual Basic编辑器(VBE)
  • 在Project Explorer窗口中选择您要保护的项目
  • 右侧cliick然后.... VBAProject属性
  • 单击“保护”选项卡,然后选中“从查看锁定项目”并验证密码
  • 保存工作簿,关闭工作簿并重新打开以建立保护

如果没有编写COM插件,这将是安全的,因为您的代码将获得。请注意,有些产品可以破解 VBA代码

enter image description here

答案 1 :(得分:2)

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

AARRGGHH !!你在想什么?

这是交易。没有多少加密可以帮助你在这里,因为如果Excel本身可以解密数据(它可以,否则连接永远不会),那么恶意类型也可以做到。

正确的方法是向用户询问用户ID和密码,并使用该信息动态构建连接字符串。

这样,敏感信息只存在于用户的头部和(暂时)存在于他们正在使用的机器上(无论如何可能是他们的机器)。它不在任何人可以访问的Excel电子表格中。

而且,最重要的是,功能ID(在不同用户之间共享)几乎总是一个坏主意,因为它使审计成为一场噩梦。