[办公] Excel VBA 读写 MySQL 数据库程序,将读取数据填入单元格

JUMU实名认证 发表于 2025-04-12 21:35 来自手机 | 显示全部楼层 | 复制链接分享      上一主题  翻页  下一主题
下面为你详细介绍如何使用Excel VBA读写 MySQL 数据库,并将读取的数据填入单元格。

### 1. 准备工作
在使用 VBA 连接 MySQL 数据库之前,你需要安装 MySQL ODBC 驱动程序。这是实现连接的基础,你可以从 MySQL 官方网站下载并安装适合你系统的版本。

### 2. 编写 VBA 代码

#### 读取数据并填入单元格的代码
  1. Sub ReadFromMySQLAndFillCells()
  2.     Dim conn As Object
  3.     Dim rs As Object
  4.     Dim connStr As String
  5.     Dim sql As String
  6.     Dim i As Long
  7.     Dim j As Long
  8.    
  9.     ' 创建 ADO 连接对象
  10.     Set conn = CreateObject("ADODB.Connection")
  11.     Set rs = CreateObject("ADODB.Recordset")
  12.    
  13.     ' 构建连接字符串,你需要根据实际情况修改数据库服务器地址、数据库名、用户名和密码
  14.     connStr = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
  15.               "SERVER=localhost;" & _
  16.               "DATABASE=your_database;" & _
  17.               "UID=your_username;" & _
  18.               "PWD=your_password;" & _
  19.               "OPTION=3"
  20.    
  21.     ' 打开数据库连接
  22.     conn.Open connStr
  23.    
  24.     ' 定义 SQL 查询语句,这里以查询 your_table 表中的所有数据为例
  25.     sql = "SELECT * FROM your_table"
  26.    
  27.     ' 执行查询并将结果存储在记录集中
  28.     rs.Open sql, conn
  29.    
  30.     ' 检查记录集是否为空
  31.     If Not rs.EOF Then
  32.         ' 从第二行开始填充数据,第一行用于表头
  33.         i = 2
  34.         ' 填充表头
  35.         For j = 0 To rs.Fields.Count - 1
  36.             Cells(1, j + 1).Value = rs.Fields(j).Name
  37.         Next j
  38.         
  39.         ' 逐行填充数据
  40.         Do While Not rs.EOF
  41.             For j = 0 To rs.Fields.Count - 1
  42.                 Cells(i, j + 1).Value = rs.Fields(j).Value
  43.             Next j
  44.             rs.MoveNext
  45.             i = i + 1
  46.         Loop
  47.     End If
  48.    
  49.     ' 关闭记录集和数据库连接
  50.     rs.Close
  51.     conn.Close
  52.    
  53.     ' 释放对象
  54.     Set rs = Nothing
  55.     Set conn = Nothing
  56. End Sub
复制代码

#### 向 MySQL 数据库写入数据的代码

  1. Sub WriteToMySQLFromCells()
  2.     Dim conn As Object
  3.     Dim connStr As String
  4.     Dim sql As String
  5.     Dim lastRow As Long
  6.     Dim i As Long
  7.    
  8.     ' 创建 ADO 连接对象
  9.     Set conn = CreateObject("ADODB.Connection")
  10.    
  11.     ' 构建连接字符串,你需要根据实际情况修改数据库服务器地址、数据库名、用户名和密码
  12.     connStr = "DRIVER={MySQL ODBC 8.0 ANSI Driver};" & _
  13.               "SERVER=localhost;" & _
  14.               "DATABASE=your_database;" & _
  15.               "UID=your_username;" & _
  16.               "PWD=your_password;" & _
  17.               "OPTION=3"
  18.    
  19.     ' 打开数据库连接
  20.     conn.Open connStr
  21.    
  22.     ' 获取工作表中数据的最后一行
  23.     lastRow = Cells(Rows.Count, 1).End(xlUp).Row
  24.    
  25.     ' 逐行读取 Excel 数据并插入到 MySQL 数据库中
  26.     For i = 2 To lastRow
  27.         ' 假设表中有三个字段 field1, field2, field3,你需要根据实际情况修改
  28.         sql = "INSERT INTO your_table (field1, field2, field3) VALUES ('" & _
  29.               Cells(i, 1).Value & "', '" & Cells(i, 2).Value & "', '" & Cells(i, 3).Value & "')"
  30.         conn.Execute sql
  31.     Next i
  32.    
  33.     ' 关闭数据库连接
  34.     conn.Close
  35.    
  36.     ' 释放对象
  37.     Set conn = Nothing
  38. 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 数据库。

  距米网  

找到您想要的设计

工程师、学生在线交流学习平台
关注我们

手机版- 距米网 |苏公网安备32041102000587号

©2017-2025 苏ICP备18040927号-1