在前面的把Excel当作数据库处理的介绍中,使用ADO连接数据库是调用Open方法:
AdoConn.Open "Provider =Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0;HDR=YES"";"
这个连接字符串是以分号来进行分割的key value,就像使用外部对象字典中用到的它的key和item一样。
里面比较特殊的是Provider,这个东西是数据库驱动程序的名称,真正去操作数据库的那个程序。
作为初学者,怎么知道什么数据库对应使用什么样的Provider呢?我以前基本都是网上搜索,然后记录在某个地方,这当然也是一个不错的办法,这里再介绍2个其他的方法:
Excel菜单
使用图中Excel菜单[数据]下的[获取和转换数据]功能,就能够得到Provider字符串,但是这种得到的字符串一般很长,有许多默认的属性是可以忽略不写的。
新建1个txt文件,然后把后缀修改为uld,右键点击属性查看:
就算没有连接成功也能得到需要的Provider字符串,上面演示的是SQL Serve的连接字符串,其他的可以自己去试试。
细心的可能会发现,图中并没有Microsoft.ACE.OLEDB,那是因为我的电脑是64位的,而电脑里Microsoft.ACE.OLEDB是32位的,uld文件默认关联的是和电脑同样版本的驱动。
想要调出32位驱动,可以使用1个cmd命令:
REM 使用udl文件获取连接数据库的字符串
cd . > getProvider.udl
rundll32 "C:\Program Files (x86)\Common Files\System\Ole DB\oledb32.dll", OpenDSLFile getProvider.udl
新建1个txt文件,后缀修改为.cmd,然后复制上面的内容,双击打开:
里面就有了32位的驱动程序了(Microsoft.ACE.OLEDB就是Access Database Enhine)。
(注意oledb32.dll的路径。)
这个方法比较方便,任何一台电脑都可以随时找出所安装的驱动程序,并很方便的写出Provider字符串。