学VBA连接数据库那些字符串怎么用,搞定多种数据源其实没那么难
- 问答
- 2026-01-17 23:07:31
- 1
ExcelHome论坛《VBA连接数据库字符串详解》
学VBA连接数据库,最让人头疼的可能就是那一长串像天书一样的连接字符串了,别怕,这东西说白了就是个“地址条”,你告诉VBA要去哪家、找谁、用什么钥匙开门,只要拆开看,一点都不神秘,今天咱们就把它掰开揉碎,让你能轻松搞定几种最常见的数据源。
连接字符串的核心“配方”
不管连什么数据库,连接字符串都包含几个基本部分,像搭积木一样拼起来就行,最关键的是这三个:
- 提供者: 就是驱动程序,可以理解成你要用哪种“翻译官”去和数据库说话,比如连Access、连Excel、连SQL Server,用的“翻译官”都不一样。
- 数据源位置: 数据库文件放在哪里,或者数据库服务器的名字和地址,这是你要去的“具体门牌号”。
- 安全信息: 怎么证明你有权限进去,通常是用户名和密码,但有时候也可以不用,比如Access数据库可能就没设密码。
把这几个核心要素记在心里,我们再来看具体例子就好懂了。
实战1:连接Access数据库(.mdb或.accdb文件)
这是最常遇到的情况,你的数据库就是一个.accdb或.mdb文件,可能就在你电脑的某个文件夹里。
-
使用旧版Provider(适合.mdb和.accdb):
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\我的文件夹\数据库.mdb;"这里,Microsoft.Jet.OLEDB.4.0是老牌的“翻译官”,既能连旧的.mdb,也能连比较新的.accdb。Data Source后面就是文件在电脑上的完整路径。 -
使用新版Provider(推荐用于.accdb):
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\我的文件夹\数据库.accdb;"Microsoft.ACE.OLEDB.12.0是更新的“翻译官”,对accdb文件支持更好,如果你的电脑上同时有旧版Access和新版Access,用这个通常更稳妥。 -
如果数据库有密码怎么办? 就在后面追加密码信息:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\我的文件夹\数据库.accdb;Jet OLEDB:Database Password=你的密码;"
VBA代码怎么写?
光有字符串还不行,得在VBA里用起来,套路非常固定,就像你打电话要先拿起听筒、拨号、说话、再挂断一样。
Sub 连接Access示例()
Dim conn As Object ' 定义一个连接对象
Set conn = CreateObject("ADODB.Connection") ' 创建这个连接对象
' 这就是我们上面说的连接字符串,以Access为例
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\我的数据库.accdb;"
conn.Open ' “拨号”连接,门就打开了
' ... 这里写你连接成功后要做的操作,比如查询数据 ...
conn.Close ' 做完事记得“挂电话”,关闭连接
Set conn = Nothing ' 把这个对象清空
End Sub
实战2:连接Excel文件(把Excel当数据库查)
很多人不知道,Excel文件本身也能被VBA当作数据库来查询,特别适合处理大量数据,这时候,一个.xlsx文件就是一个“数据库”,里面的每个工作表(Sheet)就是一张“表”。
- 连接字符串:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\我的数据.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";"这里的关键是Extended Properties(扩展属性)。Excel 12.0 Xml告诉“翻译官”这是个新版本的Excel文件。HDR=YES非常重要,意思是“第一行是列标题”,这样你查询时才能用列名,如果是HDR=NO,系统会默认第一行也是数据,列名会变成F1, F2这样的。
实战3:连接SQL Server数据库

如果要连接公司服务器上的SQL Server,字符串稍微复杂点,但核心要素不变。
-
标准写法(使用用户名密码登录):
"Provider=SQLOLEDB;Data Source=你的服务器名或IP地址;Initial Catalog=数据库名;User ID=用户名;Password=密码;"这里,Data Source填的是服务器的名字(比如公司内部服务器名)或者IP地址(比如192.168.1.100)。Initial Catalog指的是这个服务器上你要具体连接的那个数据库叫啥名。 -
信任连接(Windows身份验证): 如果你的电脑登录权限可以直接访问数据库,可以用更简单的方式:
"Provider=SQLOLEDB;Data Source=你的服务器名;Initial Catalog=数据库名;Integrated Security=SSPI;"Integrated Security=SSPI的意思就是“用我当前登录Windows的账号去验证”,这样就不用显式地写用户名和密码了。
怎么测试连接是否成功?
一个非常实用的技巧是,在你写复杂的SQL查询之前,先用最简单的conn.Open方法测试一下,如果密码错了或者文件路径不对,VBA会报错,如果能顺利执行到conn.Open这一句之后没有报错,那就说明你的连接字符串写对了,门已经打开了!接下来再进行数据操作就放心多了。
总结一下
连接字符串就是“翻译官+地址+钥匙”的组合,你可以先找一个正确的例子,然后像改填空题一样,根据你的实际情况修改文件路径、服务器名、用户名和密码这几个关键地方,多试几次,熟悉了之后就会发现,搞定各种数据源真的没那么难,下次遇到新的数据库类型,上网搜一下“VBA连接 [数据库名] 连接字符串”,基本上都能找到现成的模板,照着改就行。
本文由革姣丽于2026-01-17发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://waw.haoid.cn/wenda/82687.html