You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Word VBA将Recordset数据导出至Excel工作表?

将ADODB Recordset数据写入Excel工作表(Word宏场景)

方法1:直接批量复制(最简便高效)

如果不需要对数据做额外处理,用CopyFromRecordset方法就能一次性把Recordset的所有数据写入工作表,表头可单独提取:

' 假设你已定义并初始化以下对象:
' Dim rs As ADODB.Recordset
' Dim xlApp As Excel.Application
' Dim xlWB As Excel.Workbook
' Dim xlWS As Excel.Worksheet

' 1. 写入SQL表字段名作为Excel表头
Dim i As Integer
For i = 0 To rs.Fields.Count - 1
    xlWS.Cells(1, i + 1).Value = rs.Fields(i).Name
Next i

' 2. 从第2行开始批量写入数据
xlWS.Cells(2, 1).CopyFromRecordset rs

方法2:循环逐行写入(适合自定义处理)

如果需要对每一行数据做格式调整、内容修改等自定义操作,可遍历Recordset逐行写入:

' 基于已有的对象
Dim rowNum As Integer
rowNum = 1 ' 起始行号

' 写入表头
For i = 0 To rs.Fields.Count - 1
    xlWS.Cells(rowNum, i + 1).Value = rs.Fields(i).Name
Next i
rowNum = rowNum + 1

' 循环写入每条记录
Do While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        xlWS.Cells(rowNum, i + 1).Value = rs.Fields(i).Value
        ' 可在此添加自定义逻辑,比如设置单元格格式:
        ' xlWS.Cells(rowNum, i + 1).NumberFormat = "yyyy-mm-dd"
    Next i
    rs.MoveNext
    rowNum = rowNum + 1
Loop

后续清理步骤(必须执行)

数据写入完成后,及时关闭连接、释放对象,避免内存占用:

' 关闭并释放Recordset
If Not rs Is Nothing Then
    If rs.State = adStateOpen Then rs.Close
    Set rs = Nothing
End If
' 若有ADODB.Connection对象,同样需关闭释放
' If Not conn Is Nothing Then
'     If conn.State = adStateOpen Then conn.Close
'     Set conn = Nothing
' End If

' 保存并关闭Excel对象
xlWB.Save ' 根据需求决定是否保存
xlWB.Close
xlApp.Quit
Set xlWS = Nothing
Set xlWB = Nothing
Set xlApp = Nothing

内容的提问来源于stack exchange,提问作者Naruhina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 21:25:24