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

使用TransferSpreadsheet导入Excel数据到Access时报运行时错误3125

问题排查与修复方案

  • 修复变量异常问题
    • blnHasFieldNames参数未赋值,该参数需要明确指定:如果你的Excel工作表第一行是表头字段,赋值为True,否则赋值为False
    • sheet变量未声明,需要补充声明Dim sheet As String
  • 修复工作表名格式错误
    TransferSpreadsheet方法指定工作表时,带空格的工作表名需要用方括号包裹,且后缀为$而非!,正确写法为sheet = "[Overall Activity$]"
  • 修复Excel版本适配错误
    你导入的是.xlsm格式的工作簿,acSpreadsheetTypeExcel9对应Excel 2000及更早的.xls格式,无法识别xlsm文件,需要替换为acSpreadsheetTypeExcel12Xml(对应Excel 2007及以上版本格式)

修复后完整代码

Sub ExportReport()
    '声明变量
    Dim strPathFile As String, strFile As String, strPath As String, FileName As String
    Dim strTable As String
    Dim blnHasFieldNames As Boolean
    Dim MasterDB As Worksheet
    Dim sheet As String '补充声明sheet变量
    
    'Excel第一行为表头设为True,无表头设为False
    blnHasFieldNames = True
    '修正工作表名格式
    sheet = "[Overall Activity$]"
    
    strPath = "Z:\High Exposure Administration Team\HET - Management Reporting\"
    
    strTable = "ActivityTable"
    
    strFile = Dir(strPath & "Weekly Activity Reporting Tool.xlsm")
    strPathFile = strPath & strFile
    '替换Excel版本常量
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
          strTable, strPathFile, blnHasFieldNames, sheet
    
    Application.DisplayAlerts = True
End Sub

额外注意事项

  • 如果导入时提示字段类型不匹配,先检查Access目标表ActivityTable的字段类型和Excel列的内容格式是否一致
  • 确保运行代码时,目标Excel文件没有被其他程序占用打开

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:00:06