无法从 Excel 中的 VBA 查询连接到 Access 数据库
Posted
技术标签:
【中文标题】无法从 Excel 中的 VBA 查询连接到 Access 数据库【英文标题】:Can't connect to Access Database from VBA query in Excel 【发布时间】:2015-06-16 11:05:24 【问题描述】:我有一个内置在 Excel 中的 VBA 查询,它针对 Access 数据库运行 SQL 查询。当数据库不受保护且没有使用以下代码的密码时,连接有效:
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
但是当我用密码保护数据库并尝试上面相同但添加密码条件时,它不会连接并且我收到“运行时错误 -2147217843”消息。我为此使用的代码如下:
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.ACE.OLEDB.12.0;"
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Cnct = Cnct & "user ID=" & Environ("Username") & ";"
Cnct = Cnct & "password=XXXXXXXXXX;"
Connection.Open ConnectionString:=Cnct
有人知道我在这里做错了什么吗?
【问题讨论】:
有人可能会立即发现这一点,但运行时 Environ("Username") 中的内容是什么?然后您可以使用 Environ("Username") 中的值和密码手动登录数据库吗? 当我打开数据库时,它只要求输入密码。我还需要用户名吗?我从互联网上获得了 Environ("Username"),据说它会获取 Windows 登录用户名。 connectionstrings.com/access - 请参阅 Microsoft ACE OLEDB 12.0 RE 加密与 Access 2010 下的 cmets 谢谢 Alex,你知道如何将加密设置设置为 2007 加密吗? 数据库正在寻找数据库用户 ID 和密码,而不是 Windows 用户 ID(由 Environ("Username") 返回)。如果它只要求输入密码,则 UserID 可能是admin
【参考方案1】:
这是您拥有 Access 2007 时使用的连接字符串 - 2013 数据库受密码保护,使用“设置数据库 Access 中的密码”功能。
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Jet OLEDB:Database Password=MyDbPassword;
一些关于密码长度超过 14 个字符的问题的报告。还 有些字符可能会引起麻烦。如果您遇到问题, 尝试将密码更改为带有普通字符的短密码。
注意!报告称使用 Access 2010 - 2013 默认加密方案加密的数据库不适用于此连接 细绳。在访问中;尝试选项并选择 2007 加密方法 反而。那应该使它起作用。我们不知道任何其他 解决方案。如果有其他解决方案,请与我们联系!
(Source)
【讨论】:
@wilson - 不要忘记✓ Accept
一个有助于解决您的问题的答案...您将获得 +2
声誉,并且答案的作者得到 +15
代表。当您的声望达到 15 时,您可以也 ▲ Upvote
任何有帮助的答案,这也将奖励作者加上您的反馈投票的形式有利于Stack Overflow 整个社区!以上是关于无法从 Excel 中的 VBA 查询连接到 Access 数据库的主要内容,如果未能解决你的问题,请参考以下文章