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

如何使用SQL查询将文件夹内所有文件批量上传到MS Access

Access批量导入指定文件夹内Excel文件的解决方案

以下提供两种可直接落地的操作方案,按需选择即可:

方案1:VBA脚本批量导入(最灵活,支持大量文件场景)

该方案支持两种导入逻辑:所有Excel文件导入到同一个表、每个Excel文件单独生成对应表,可按需修改参数。

  1. 打开你的Access数据库,按Alt + F11唤出VBA编辑器,右键点击左侧当前数据库名称,选择「插入」-「模块」
  2. 将以下代码粘贴到模块编辑区,根据你的实际需求修改头部常量参数:
Sub BatchImportExcel()
    ' --------------- 以下参数可根据需求修改 ---------------
    Const EXCEL_FOLDER As String = "C:\Users\Usuari\Desktop\DATA\" ' 目标文件夹路径,注意末尾加\
    Const HAS_HEADERS As Boolean = True ' Excel第一行是否为表头,是则填True,否则False
    Const MERGE_TO_ONE_TABLE As Boolean = True ' 是否合并到同一个表,是则填True,否则每个文件单独建表
    Const TARGET_TABLE As String = "合并导入表" ' 合并导入时的目标表名
    ' -----------------------------------------------------
    
    Dim fso As Object
    Dim folder As Object
    Dim file As Object
    Dim ext As String
    Dim importCmd As String
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(EXCEL_FOLDER)
    
    For Each file In folder.Files
        ext = LCase(fso.GetExtensionName(file.Path))
        ' 仅处理Excel格式文件
        If ext = "xlsx" Or ext = "xls" Or ext = "xlsb" Or ext = "xlsm" Then
            If MERGE_TO_ONE_TABLE Then
                ' 合并导入到同一张表
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
                    TARGET_TABLE, file.Path, HAS_HEADERS
            Else
                ' 每个文件单独建表,表名用文件名去掉后缀
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, _
                    Replace(fso.GetBaseName(file.Path), " ", "_"), file.Path, HAS_HEADERS
            End If
            Debug.Print "已导入文件:" & file.Name
        End If
    Next
    
    Set file = Nothing
    Set folder = Nothing
    Set fso = Nothing
    MsgBox "批量导入完成!", vbInformation
End Sub
  1. 按F5运行脚本即可完成批量导入。

注意事项

  • 若选择合并导入逻辑,需确保所有Excel文件的列结构(列数、列数据类型)完全一致,避免导入报错
  • 运行前需关闭所有正在打开的目标文件夹内的Excel文件,避免文件占用导致导入失败
  • 若Access提示宏被禁用,可通过「文件」-「选项」-「信任中心」-「信任中心设置」-「宏设置」,选择「启用所有宏」后重启Access再运行

方案2:无代码批量合并导入(适合文件结构一致的场景)

如果不想编写VBA代码,可通过Excel的Power Query功能先批量合并所有文件,再一次性导入Access:

  • 打开任意空白Excel文件,依次点击「数据」-「获取数据」-「自文件」-「自文件夹」,选择你的目标文件夹C:\Users\Usuari\Desktop\DATA
  • 待加载出所有文件列表后,点击列表上方的「合并」-「合并并加载」,等待所有文件合并为一张Excel表
  • 回到Access,按你熟悉的External Data-> New Data Source-> From_File-> Excel路径,导入刚才合并完成的Excel文件即可

内容的提问来源于stack exchange,提问作者J.K Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:57:05