dynamic数据连接string没有VBA

是否有可能有一个连接string取决于单元格值或命名公式在.xlsx文件(即非macros启用表)?


背景:

每个月我都会创build一个新的工作簿并更新外部数据源。 通过这种方式,我可以在每个月的结果中find工作簿,并可以随时查看过去一个月的数据。

现在,因为我在同一个数据上使用多个数据透视表,所以我使用了一个数据连接。 连接string看起来像这样,其中的数据源是相关的。

 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 // 

我通常手动更新数据源path,但由于我想扩展项目,我正在做多个其他任务,这个手动更新过程变得非常烦人(将文件path中的1705从单元格值更改为1706 )。

有几个原因让我无法在VBA中做出解决scheme:

  • 来自启用macros的文件的安全警告。
  • 用户知道Excel表为.xlsx ,可能无法识别.xlm
  • 遗产。 我的继任者,最终需要在工作表中编辑某些内容可能不知道VBA。

我四处搜寻没有成功。 相关链接,不幸的是不回答这个问题链接如下。

  • support.office.com:更改数据透视表的源数据 (标准单击更新方式)
  • Excelmacros来更改外部数据查询连接 – 例如,从一个数据库指向另一个数据库 (VBA解决scheme)
  • Microsoft Excel数据连接 – 通过VBA更改连接string (VBA解决scheme更改连接string)

长话短说 – 没有 。 这是一个巨大的安全问题。 如果你find了一个办法,马上通知微软,他们会很乐意修复它:)。

任何曾经用SQL赚过一美元的人从Excel的单元格中读取数据肯定会被认为是不好的做法。 我的意思是,连接string可能是你拥有的最敏感的信息。 即使使用VBA,也要确保密码始终由用户写入单元格(或通过表单),然后擦除。 没有在代码中硬编码。

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