【发布时间】:2016-03-08 23:11:50
【问题描述】:
我正在尝试使用 VBA 隐藏我在 Excel 工作表中设置的数据连接的密码。由于 Excel 以纯文本形式存储外部数据源的密码,我想让 VBA 调用表的刷新并提供密码。我录制了一个刷新表格并输入密码的宏,但令我沮丧的是,它似乎省略了密码部分……这是我唯一需要的部分。
Sheets("RAW").Select
Range("R16").Select
Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False
我无法在网上找到任何解决方案。我隐约知道可以通过 VBA 直接设置数据库连接,但是 a)有很多枢轴和数据表没有构建的东西,b)我不确定我对数据库的了解是否足以解决所有问题.有谁知道是否有任何方法可以让 VBA 将密码“传递”到外部数据连接?
【问题讨论】:
-
您可能必须更新查询表上的连接字符串以包含密码、刷新,然后从连接字符串中删除密码。简要研究表明,当输入密码时,它会保存在连接字符串中,这样您以后就不必再输入了。
-
显然,如果您重新创建数据库连接,则会出现一个“记住密码”的小框。其他一些人在这里对此进行了讨论:visualbasic.ittoolbox.com/groups/technical-functional/vb-vba-l/… 您还可以编辑连接字符串(应保存在外部),以包含密码。通常建议为数据库设置一个“只读”用户,以便在此类应用程序中使用。这样,如果有人拿到/破解了密码,这没什么大不了的。
-
我对复选框很熟悉。希望找到一种方法,让我可以在不提供密码的情况下将工作表分发给几个人。我只有读取权限,所以我不确定他们拥有我的密码会带来什么危害,但我仍然希望保持它的安全。我没想到 VBA 每次都重写强连接。有点容易“破解”,但在我打算的应用程序中,我非常怀疑有人会尝试。当我有机会看看是否可以这样做时,我将不得不对其进行测试。谢谢
-
我检查了,看来我可以使用 VBA 代码进行更新。我很感激帮助。如果你们中的任何一个人愿意将其发布为“答案”,我很乐意接受它,这样您就可以获得答案的功劳,并且当您实际上已经回答了该问题时,该问题不会被视为“未回答”。