在VBA项目

时间:2015-06-17 09:32:33

标签: vba visio

在VBA项目中,我有一个大的SQL查询,我将其检索到一个字符串变量中,以形成从远程数据库中检索数据的操作的一部分。

目前,我将此文本以明文形式存储在文件中,并在需要时从该文件中检索。

虽然这使得开发/更新变得更容易,因为我可以在文件中轻松编辑查询,但它确实呈现曝光,因为用户可能会恶意编辑文件(损坏的机会有限,但仍然是不可接受的安全风险)。

我正在考虑/已考虑的减轻这种风险的选项是:

  • 将文本存储在项目中,作为全局变量。很好,因为它没有暴露给用户,但不幸的是,这意味着每次我需要对查询进行更改时,我必须将查询转换为块,转义引号,使用行继续,添加换行符并连接每个大块一起。育。
  • 将文本存储在包含在指令中的模块中,而不是编译它,然后使用VBE方法从模块行中检索和解析文本。优于上述但需要最终用户启用VBE。这就是这个选项。
  • 将文本保留在外部文件中,但对其进行模糊处理(例如,对其进行Base64编码)。为文件编辑添加一些(可接受的)开销,但在项目中需要base64解码方法(VBA有一个?)。
  • 如上所述,但使用某种加密 - 再次,需要在项目中使用解密方法。
  • 以安全的基于文件的格式(例如.mdb或.accdb)存储文本,并将代码凭据存储到Visio项目中以检索文本。

任何建议或经验?我是否错过了VBA提供的一些直截了当的选择?

2 个答案:

答案 0 :(得分:1)

为什么不将查询字符串存储在远程数据库中并在需要时检索它?您可以在该数据库中维护该字符串并使用数据库[只读]保护来防止普通用户更改它。

该表格看起来像TABLE QUERYSTRINGS (QueryName, QueryString).

查询可以是"SELECT QueryString FROM QUERYSTRINGS WHERE QueryName='MyQuery';"

答案 1 :(得分:1)

我可以建议另一个解决方案吗?保持"非常隐藏"片材。

将SQL查询复制到工作表(一行或多行,由您决定);然后转到VBA(宏编辑器,IDE,无论你怎么称呼它),在项目菜单中选择工作表;最后在属性窗口中(如果看不到则按F4),选择:

Visible = 2 (xlSheetVeryHidden)

这样用户就不会看到工作表和代码,只要用密码保护项目,用户就无法访问它。