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

如何用Excel VBA将多行数据从Excel导入Access表末尾?

批量将Excel多行数据导入Access数据表的VBA解决方案

核心思路

直接使用Access的TransferSpreadsheet方法批量导入Excel指定区域数据,无需手动复制粘贴,完美适配多列(如56列)场景,避免逐个字段赋值的繁琐。

修改后的完整代码

Dim AccessBookFilePath As String
Dim appAccess As Access.Application
Dim exportSheet As Worksheet
Dim lastRow As Long

' 获取Access数据库路径
AccessBookFilePath = Range("N2").Value

' 创建Access应用对象
Set appAccess = New Access.Application

' 打开目标Access数据库(修正路径分隔符为Windows标准反斜杠)
appAccess.OpenCurrentDatabase "P:\Contracts\" & AccessBookFilePath

' 定位到要导出的Excel工作表
Set exportSheet = ThisWorkbook.Sheets("Data To Export")
' 获取数据区域最后非空行号
lastRow = exportSheet.Range("A" & exportSheet.Rows.Count).End(xlUp).Row

' 批量导入Excel数据到Access表
appAccess.DoCmd.TransferSpreadsheet _
    TransferType:=acImport, _
    SpreadsheetType:=acSpreadsheetTypeExcel12Xml, _
    TableName:="Retail Contracts Monitoring", _
    HasFieldNames:=True, _
    Range:=exportSheet.Name & "!A2:" & exportSheet.Cells(lastRow, 56).Address

' 可选:打开Access表查看导入结果
appAccess.DoCmd.OpenTable "Retail Contracts Monitoring"
appAccess.UserControl = True

' 释放对象,避免内存泄漏
Set exportSheet = Nothing
Set appAccess = Nothing

关键注意事项

  • 列顺序匹配:必须保证Excel数据列的顺序和Access表的字段顺序完全一致,否则会出现数据错位
  • 表头参数设置:HasFieldNames设为True时,要求Excel第1行是表头且与Access字段名对应;如果Excel第2行开始是纯数据,改为False
  • 路径格式修正:原代码中的P:'Contracts是错误格式,Windows系统路径需用反斜杠\
  • 抛弃低效操作:避免使用Select和Copy这类手动交互式操作,TransferSpreadsheet是Access官方推荐的批量导入方法,稳定性和效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:40:35