sqlserver
mysql
ActiveX 数据对象(ADO,ActiveX Data Object)是一种用来连接数据库的工具,可以连接多种数据库类型,如Mysql、Pgsql等。
添加引用
安装ODBC驱动:
下载地址:https://dev.mysql.com/downloads/connector/odbc/
建议32位与64位都下载,安装后配置DSN数据源(excel直连数据源踩坑太多)
配置DSN数据源
odbcconf.exe /A {CONFIGDSN "MYSQL ODBC 8.1 Unicode Driver" "DSN=mysqlinklexcel;UID=root;PWD=Zhupo222;SERVER=192.168.122.105 ;PORT=3306;Database=reportdata;"}
UID:数据库用户名
PWD:数据库密码
SERVER:数据库IP地址
PORT:数据库的端口
Database:数据库的名称
前期绑定方式:添加引用Microsoft ActiveX Data Objects Library,勾选最新的一个版本。
VBA连接MySql前的准备
Tools--->References..---->引用
勾选以下两个引用
Microsoft ActiveX Data Objects 2.8 Librarys
Microsoft ActiveX Data Objects Recordset 2.8 Librarys
连接对象Connection
定义:
Dim conn As ADODB.Connection
实例化:Set conn = New ADODB.Connection '创建一个连接
连接信息:conn.ConnectionString = "Driver={MySQL ODBC 8.0 Unicode Driver};Server="";Port="";Database="";Uid="";Pwd="";OPTION=3;"
Driver是连接的数据库类型。
打开连接:conn.Open
关闭连接:conn.Close
释放资源:Set conn = Nothing
记录集对象Recordset
定义:
Dim rs As ADODB.Recordset
实例化:Set rs = New ADODB.Recordset '创建一个记录集,用来存放查寻结果
执行sql:rs.Open mysql, conn
sql结果字段数:rs.Fields.Count
sql结果字段名:rs.Fields(i).Name 0表示第一个字段
将数据读取到单元格:ActiveSheet.Cells(2,1).CopyFromRecordset rs
记录移动:取数后记录定位在第一条,rst.movenext
可以移动到下一条。当rst.eof = true
表示已经到最后一条。