[办公]
Excel VBA 读写 MySQL 数据库程序,将读取数据填入单元格
下面为你详细介绍如何使用Excel VBA读写 MySQL 数据库,并将读取的数据填入单元格。
### 1. 准备工作
在使用 VBA 连接 MySQL 数据库之前,你需要安装 MySQL ODBC 驱动程序。这是实现连接的基础,你可以从 MySQL 官方网站下载并安装适合你系统的版本。
### 2. 编写 VBA 代码
#### 读取数据并填入单元格的代码
- Sub ReadFromMySQLAndFillCells()
- Dim conn As Object
- Dim rs As Object
- Dim connStr As String
- Dim sql As String
- Dim i As Long
- Dim j As Long
-
- ' 创建 ADO 连接对象
- Set conn = CreateObject("ADODB.Connection")
- Set rs = CreateObject("ADODB.Recordset")
-
- ' 构建连接字符串,你需要根据实际情况修改数据库服务器地址、数据库名、用户名和密码
- connStr = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
- "SERVER=localhost;" & _
- "DATABASE=your_database;" & _
- "UID=your_username;" & _
- "PWD=your_password;" & _
- "OPTION=3"
-
- ' 打开数据库连接
- conn.Open connStr
-
- ' 定义 SQL 查询语句,这里以查询 your_table 表中的所有数据为例
- sql = "SELECT * FROM your_table"
-
- ' 执行查询并将结果存储在记录集中
- rs.Open sql, conn
-
- ' 检查记录集是否为空
- If Not rs.EOF Then
- ' 从第二行开始填充数据,第一行用于表头
- i = 2
- ' 填充表头
- For j = 0 To rs.Fields.Count - 1
- Cells(1, j + 1).Value = rs.Fields(j).Name
- Next j
-
- ' 逐行填充数据
- Do While Not rs.EOF
- For j = 0 To rs.Fields.Count - 1
- Cells(i, j + 1).Value = rs.Fields(j).Value
- Next j
- rs.MoveNext
- i = i + 1
- Loop
- End If
-
- ' 关闭记录集和数据库连接
- rs.Close
- conn.Close
-
- ' 释放对象
- Set rs = Nothing
- Set conn = Nothing
- End Sub
复制代码
#### 向 MySQL 数据库写入数据的代码
- Sub WriteToMySQLFromCells()
- Dim conn As Object
- Dim connStr As String
- Dim sql As String
- Dim lastRow As Long
- Dim i As Long
-
- ' 创建 ADO 连接对象
- Set conn = CreateObject("ADODB.Connection")
-
- ' 构建连接字符串,你需要根据实际情况修改数据库服务器地址、数据库名、用户名和密码
- connStr = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
- "SERVER=localhost;" & _
- "DATABASE=your_database;" & _
- "UID=your_username;" & _
- "PWD=your_password;" & _
- "OPTION=3"
-
- ' 打开数据库连接
- conn.Open connStr
-
- ' 获取工作表中数据的最后一行
- lastRow = Cells(Rows.Count, 1).End(xlUp).Row
-
- ' 逐行读取 Excel 数据并插入到 MySQL 数据库中
- For i = 2 To lastRow
- ' 假设表中有三个字段 field1, field2, field3,你需要根据实际情况修改
- sql = "INSERT INTO your_table (field1, field2, field3) VALUES ('" & _
- Cells(i, 1).Value & "', '" & Cells(i, 2).Value & "', '" & Cells(i, 3).Value & "')"
- conn.Execute sql
- Next i
-
- ' 关闭数据库连接
- conn.Close
-
- ' 释放对象
- Set conn = Nothing
- End Sub
复制代码
### 3. 代码使用说明
- **读取数据**:
- 把代码复制到 Excel 的 VBA 编辑器里(通过“开发工具”选项卡进入)。
- 修改`connStr`里的`your_database`、`your_username`、`your_password`为实际的数据库名、用户名和密码。
- 调整`sql`语句里的`your_table`为要查询的表名。
- 运行`ReadFromMySQLAndFillCells`宏,就能把数据库的数据读取并填入 Excel 单元格。
- **写入数据**:
- 同样把代码复制到 VBA 编辑器。
- 修改`connStr`里的数据库连接信息。
- 调整`sql`语句里的`your_table`和字段名(`field1`, `field2`, `field3`)为实际的表名和字段名。
- 在 Excel 里准备好要写入的数据,第一行是表头,从第二行开始是数据。
- 运行`WriteToMySQLFromCells`宏,就能把 Excel 数据写入 MySQL 数据库。 |
|
|
|
|