如何掩盖Excelmacros代码

我有以下存储在Excelmacros: –

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 

我希望掩盖上面的用户名和密码即。 User Id=****;Password=*****作为安全性的一部分。

那可能吗?

无论用户是否需要input密码,最安全的选项都是保护您的整个macros代码

  • 进入Visual Basic编辑器(VBE)
  • 在“项目浏览器”窗口中select要保护的项目
  • 右键cliick然后…. VBAProject属性
  • 单击保护选项卡,然后选中“locking项目查看”并validation您的密码
  • 保存您的工作簿,closures它并重新打开它以build立保护

写一个COM插件,这是安全的,因为你的代码将得到。 被警告有可用的产品会破解 VBA代码

在这里输入图像描述

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

AARRGGHH! 你在想什么?

这是交易。 没有多lessencryption技术可以帮助你,因为如果Excel本身可以解密数据(而且它可以,否则连接永远不能做),那么恶意types也可以做到这一点。

正确的做法是向用户询问用户标识和密码,并使用该信息dynamic构build连接string。

这样,敏感信息只存在于用户头上(暂时)在他们正在使用的机器上(这可能是他们的机器)。 这不是在任何人都可以在任何地方的Excel电子表格。

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