[办公] 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