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

Access VBA如何合并多表?100张同结构表合并为单查询需求

Access批量合并同结构表为单个查询的简便方法

由于你的所有表字段结构一致,完全可以通过VBA自动生成联合查询,无需逐个指定表名,步骤如下:

  1. 打开目标Access数据库,按下Alt+F11打开VBA编辑器
  2. 在左侧导航栏右键点击数据库对象,选择插入 > 模块
  3. 将以下代码粘贴到模块窗口中,按F5运行代码:
Sub MergeAllTables()
    Dim db As DAO.Database
    Dim tdf As DAO.TableDef
    Dim sqlStr As String
    Dim isFirstTable As Boolean
    
    Set db = CurrentDb()
    isFirstTable = True
    
    ' 遍历数据库中所有表,构建UNION ALL查询语句
    For Each tdf In db.TableDefs
        ' 跳过系统表和临时表,可根据需求添加其他排除规则
        If Left(tdf.Name, 4) <> "MSys" And Left(tdf.Name, 1) <> "~" Then
            If isFirstTable Then
                sqlStr = "SELECT * FROM [" & tdf.Name & "]"
                isFirstTable = False
            Else
                sqlStr = sqlStr & " UNION ALL SELECT * FROM [" & tdf.Name & "]"
            End If
        End If
    Next tdf
    
    ' 创建合并查询
    If sqlStr <> "" Then
        ' 创建名为"合并所有表"的查询
        db.CreateQueryDef("合并所有表", sqlStr)
        MsgBox "合并查询已创建完成,查询名为'合并所有表'", vbInformation
    Else
        MsgBox "未找到符合条件的可合并表", vbExclamation
    End If
    
    ' 释放对象
    Set tdf = Nothing
    Set db = Nothing
End Sub

注意事项

  • 代码默认跳过系统表(以MSys开头)和临时表(以~开头),如果有其他不需要合并的表,可在循环中添加额外判断(比如If tdf.Name <> "不需要的表名" Then)
  • 因为所有表结构一致,使用SELECT *可以快速合并,若后续表结构可能变动,建议改为明确指定字段名(例如SELECT 字段1, 字段2, 字段3 FROM...)
  • 运行前建议备份数据库,避免意外情况

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 19:35:25