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,也要确保密码始终由用户写入单元格(或通过表单),然后擦除。 没有在代码中硬编码。
微软可能被很多人认为是不好的,但他们永远不会在产品中留下这样的安全漏洞。