2017-06-29 67 views
1

有可能在.xlsx文件(即非宏启用的工作表)中有连接字符串取决于单元格值或命名公式吗?没有VBA的动态数据连接字符串


背景:

每个月

我创建了一个新的工作簿和更新外部数据源。通过这种方式,我可以为每个月的结果提供工作簿,并且可以随时查看过去一个月的数据。

现在,由于我在同一数据上使用多个数据透视表,我使用了数据连接。连接字符串看起来像这样,其中数据源是相关的。

Provider=Microsoft.ACE.OLEDB.12.0; 
User ID=Admin; 
Data Source=C:\pathtofile\myworkbook1705.xlsx; 
Mode=Share Deny Write; 
Extended Properties="HDR=NO; 
"; 
Jet OLEDB // etc. etc // 

我经常手动更新数据源路径,但因为我要扩大我做给其他多个任务的项目,这本手册更新程序从一个细胞变得无聊(变化1705中的文件路径1706值)。

几个原因使我不至于使该解决方案在VBA:从启用宏的文件

  • 安全警告。
  • 用户知道Excel表为.xlsx,可能不识别.xlm
  • 继承。我的后继者,最终需要在表格中编辑某些内容可能不知道VBA。

我都没有成功四处搜寻。不幸地不回答问题的相关链接在下面链接。

+0

您是否尝试过以下方法:https://stackoverflow.com/q/20521056/3560603 – fhossfel

回答

1

长话短说 - NO。这是一个巨大的安全问题。如果你找到了解决办法,立即通知微软,他们会很乐意修复它:)。

任何曾经用SQL从单元格中读取数据的人都可以通过SQL获得单一美元,这绝对是一种不好的做法。我的意思是,连接字符串可能是您拥有的最敏感的信息。即使使用VBA,也要确保密码始终由用户写入单元格(或通过表单),然后进行擦除。 不是硬编码在代码中。

微软可能被很多人认为是不好的,但他们永远不会在他们的产品中留下这样的安全漏洞。

+1

我甚至没有*考虑过如果可能会涉及的安全问题。现在你指出了,我完全理解。那么,至少我很欣赏得到回应!我会确保做出一个适当的安全VBA解决方案:) – Therkel

+0

@Therkel - 祝你好运。一般来说,如果你在这里看看我的GitRepo - https://github.com/Vitosh/VBA_personal/blob/45afa5f0bcc9233ac01d1ea86c0f9f321b563824/Connection.vb是保护密码的一种简单方法。例如,你可以使用'str_connection_string'函数读取用户的输出并将其他内容作为密码传递给数据库,因此用户不需要知道真实密码。另外,如果你确定你总是在电子表格中删除用户的输入,他/她将密码放在哪里,你会有点安全。 – Vityata