Access/EXCEL表格数据交换工具V2版
Access/EXCEL表格数据交换工具 V2版介绍
Access/EXCEL表格数据交换工具 V2版 是一套基于 Excel/WPS VBA + ADO 的 Access 数据库与 Excel/WPS 表格之间的数据交换工具,主要用于解决 Access 数据库表结构复杂、字段较多、手工导入导出容易出错、数据库路径不固定、字段映射维护困难等问题。
工具支持选择任意 MDB / ACCDB 数据库文件,自动扫描数据库对象,自动生成表配置和字段配置,并可按照配置将 Access 表或查询导出到 Excel/WPS 工作表,也可以将修改后的 Excel/WPS 数据按字段映射重新导入 Access 数据库。
相比传统手工复制、Access 导入导出向导或固定代码导入方式,本工具具有更高的通用性和安全性:
- 不再固定绑定某一个数据库文件;
- 不再依赖固定字段顺序;
- 支持字段映射;
- 支持指定字段导入;
- 支持导入前自动备份;
- 支持 Replace / Append 两种导入模式;
- 支持 Excel 与 WPS 常见办公环境。
经过多轮优化,目前版本已达到 V2 实用稳定版,适合日常办公、业务系统维护、考勤数据处理、Access 数据库辅助维护、Excel/WPS 二次编辑后回写等场景。
📌 核心功能一览
| 功能 | 说明 |
|---|---|
| 选择任意数据库 | 支持选择任意 .mdb / .accdb Access 数据库文件 |
| 自动刷新数据库结构 | 自动扫描 Access 中的表、查询、链接表等对象 |
| 自动生成表配置 | 自动写入 Config_Tables,形成可维护的表清单 |
| 自动生成字段配置 | 自动写入 Config_Fields,形成字段映射表 |
| 字段映射导出 | 按 Config_Fields 指定字段导出,不依赖表字段顺序 |
| 字段映射导入 | 按字段名插入 Access,避免 SELECT * 顺序错乱风险 |
| 支持中文表头 | Excel 表头可与 Access 字段名不同 |
| 支持必填校验 | 可配置字段是否必填,导入前自动检查 |
| 自动编号字段保护 | 自动编号字段默认不参与导入,降低主键冲突风险 |
| 导入前自动备份 | 每次导入前自动备份数据库,防止误操作 |
| Replace 导入模式 | 清空目标表后重新导入 |
| Append 导入模式 | 不清空原表,直接追加数据 |
| 批量导出 | 支持批量导出 TableType=1 的常用表 |
| 对象清单导出 | 可导出 Access 实际对象清单,辅助排查数据库结构 |
| 参数集中管理 | 通过 Config_Settings 管理数据库路径和工具参数 |
| 按钮操作中心 | 按钮统一放在 Config_Settings 页面,配置表更清爽 |
| WPS/Excel 双兼容 | 使用 ADO 后期绑定,兼容常见 Excel/WPS VBA 环境 |
⚙️ 工作表结构说明
V2版采用配置驱动结构,主要包含以下工作表:
| 工作表 | 用途 |
|---|---|
Config_Settings |
参数配置与按钮操作中心 |
Config_Tables |
Access 表/查询对象配置 |
Config_Fields |
Access 字段与 Excel 表头映射配置 |
Access_Objects |
Access 数据库对象清单输出表 |
Data_表名 |
从 Access 导出的数据工作表 |
Backup 文件夹 |
自动保存导入前的数据库备份文件 |
🧭 Config_Settings 参数配置表
Config_Settings 是 V2版的操作中心和参数配置中心。按钮统一放在该工作表右侧,避免占用 Config_Tables 和 Config_Fields 的配置区域。
参数结构
| 字段 | 说明 |
|---|---|
Key |
参数名称 |
Value |
参数值 |
Remark |
参数说明 |
常用参数
| Key | Value 示例 | 说明 |
|---|---|---|
DatabasePath |
D:\Data\DBBASE.MDB |
当前 Access 数据库完整路径 |
ExcelDataPrefix |
Data_ |
导出数据工作表前缀 |
AutoBackupBeforeImport |
1 |
导入前是否自动备份 |
DefaultImportMode |
Replace |
默认导入模式 |
LastBackupPath |
D:\Backup\DB_20260108.mdb |
最后一次备份文件路径 |
📋 Config_Tables 表配置说明
Config_Tables 用于保存 Access 数据库对象清单和导入导出控制参数。
| 列 | 字段 | 说明 |
|---|---|---|
A列 |
TableName |
Access 表名或查询名 |
B列 |
Info |
中文说明或备注 |
C列 |
TableType |
是否参与批量导出,1=参与,0=不参与 |
D列 |
ImportMode |
导入模式,支持 Replace / Append |
E列 |
KeyFields |
主键字段,预留给后续 Update / Upsert 模式 |
F列 |
AllowImport |
是否允许导入,1=允许,0=禁止 |
G列 |
ObjectType |
Access 对象类型,如 TABLE、VIEW |
H列 |
SheetName |
对应 Excel/WPS 数据工作表名称 |
TableType 说明
| 值 | 含义 |
|---|---|
0 |
普通对象,不参与批量导出 |
1 |
常用对象,参与批量导出 |
ImportMode 说明
| 模式 | 含义 |
|---|---|
Replace |
导入前先清空 Access 目标表,再重新导入 |
Append |
不清空目标表,直接追加数据 |
🧩 Config_Fields 字段配置说明
Config_Fields 是本工具的核心配置表,用于控制 Access 字段与 Excel/WPS 表头之间的映射关系。
| 列 | 字段 | 说明 |
|---|---|---|
A列 |
TableName |
所属 Access 表名或查询名 |
B列 |
AccessField |
Access 中的真实字段名 |
C列 |
ExcelHeader |
Excel/WPS 中显示的表头名称 |
D列 |
ImportFlag |
是否导入,1=导入,0=不导入 |
E列 |
RequiredFlag |
是否必填,1=必填,0=非必填 |
F列 |
FieldType |
字段类型代码 |
G列 |
FieldSize |
字段长度 |
H列 |
IsAutoNumber |
是否自动编号字段 |
I列 |
DefaultValue |
默认值 |
J列 |
Remark |
字段备注 |
字段映射示例
| TableName | AccessField | ExcelHeader | ImportFlag | RequiredFlag |
|---|---|---|---|---|
| PersInfo | EmpNo | 工号 | 1 | 1 |
| PersInfo | Name | 姓名 | 1 | 1 |
| PersInfo | Dept | 部门 | 1 | 0 |
| PersInfo | ID | ID | 0 | 0 |
说明:
AccessField是 Access 数据库真实字段名;ExcelHeader是导出到 Excel/WPS 后显示的表头;- 两者可以相同,也可以不同;
- 自动编号字段建议
ImportFlag=0; - 业务必填字段建议
RequiredFlag=1。
🚀 操作流程
第一步:创建或重建按钮
首次使用时,运行宏:
1 | CreateConfigTableButtons |
程序会在 Config_Settings 页面创建操作按钮,包括:
1 | 选择数据库 |
按钮统一放在 Config_Settings,这样 Config_Tables 和 Config_Fields 可以专门用于维护配置数据。
第二步:选择 Access 数据库
点击按钮:
1 | 选择数据库 |
或运行宏:
1 | SelectDatabaseFile |
程序会弹出文件选择窗口,选择目标 Access 数据库文件:
1 | .mdb |
选择完成后,数据库完整路径会写入:
1 | Config_Settings → DatabasePath |
如果 WPS 环境不支持文件选择窗口,程序会自动降级为输入框方式,让用户手动输入数据库完整路径。
第三步:刷新数据库结构
点击按钮:
1 | 刷新结构 |
或运行宏:
1 | RefreshDatabaseStructure |
程序会自动完成两件事:
- 扫描当前数据库中的表、查询、链接表等对象;
- 自动补充
Config_Tables和Config_Fields。
刷新后会生成类似结构:
1 | Config_Tables:保存表清单 |
如果数据库中存在系统表、临时对象或不可读取对象,工具会自动跳过或提示失败明细。
第四步:检查和调整表配置
进入 Config_Tables,检查每个表的配置。
常用调整项包括:
| 字段 | 建议 |
|---|---|
Info |
填写中文说明,方便识别 |
TableType |
常用导出表设为 1 |
ImportMode |
根据需要设为 Replace 或 Append |
AllowImport |
不允许回写的表设为 0 |
SheetName |
可自定义导出的工作表名称 |
示例:
| TableName | Info | TableType | ImportMode | AllowImport | SheetName |
|---|---|---|---|---|---|
| TableB | 测试数据表 | 1 | Replace | 1 | Data_TableB |
| PersInfo | 人事资料表 | 1 | Append | 1 | Data_PersInfo |
| QueryA | 查询视图 | 1 | Replace | 0 | Data_QueryA |
第五步:检查和调整字段配置
进入 Config_Fields,检查字段映射。
重点关注:
| 字段 | 说明 |
|---|---|
ExcelHeader |
可以改成中文表头 |
ImportFlag |
控制该字段是否参与导入 |
RequiredFlag |
控制导入前是否检查不能为空 |
IsAutoNumber |
自动编号字段一般不导入 |
例如:
1 | AccessField: EmpNo |
导出后 Excel/WPS 表头显示为:
1 | 工号 |
导入时工具会自动按字段映射写回:
1 | AccessField = EmpNo |
第六步:导出当前表
在 Config_Tables 中选中要导出的表所在行,然后返回 Config_Settings,点击按钮:
1 | 导出当前表 |
或运行宏:
1 | ExportSelectedTable |
程序会根据 Config_Fields 配置生成 SQL:
1 | SELECT [字段1], [字段2], [字段3] FROM [表名] |
并导出到对应工作表:
1 | Data_表名 |
如果 Config_Tables 中配置了 SheetName,则优先使用配置的工作表名称。
第七步:修改 Excel/WPS 数据
导出后,可以直接在 Data_表名 工作表中修改数据。
注意:
- 第一行是表头,不要随意删除;
- 表头名称应与
Config_Fields.ExcelHeader保持一致; - 必填字段不能为空;
- 自动编号字段通常不建议修改或导入;
- 不建议随意改变列名,除非同步修改
Config_Fields。
第八步:导入当前表
在 Config_Tables 中选中对应表所在行,然后返回 Config_Settings,点击按钮:
1 | 导入当前表 |
或运行宏:
1 | ImportSelectedTable |
导入前程序会自动执行:
- 检查是否允许导入;
- 检查数据工作表是否存在;
- 检查表头是否完整;
- 检查必填字段;
- 自动备份当前 Access 数据库;
- 根据
ImportMode执行导入。
导入模式说明:
1 | Replace:先清空目标表,再导入 |
导入完成后会提示:
- 导入表名;
- 导入模式;
- 导入行数;
- 数据库备份路径。
📊 输出结果
Config_Tables 输出
| 字段 | 内容 |
|---|---|
TableName |
Access 对象名称 |
Info |
中文说明 |
TableType |
是否参与批量导出 |
ImportMode |
导入模式 |
AllowImport |
是否允许导入 |
ObjectType |
Access 对象类型 |
SheetName |
对应工作表名称 |
Config_Fields 输出
| 字段 | 内容 |
|---|---|
TableName |
所属表 |
AccessField |
Access 字段名 |
ExcelHeader |
Excel/WPS 表头 |
ImportFlag |
是否导入 |
RequiredFlag |
是否必填 |
FieldType |
字段类型 |
FieldSize |
字段长度 |
IsAutoNumber |
是否自动编号 |
DefaultValue |
默认值 |
Remark |
备注 |
Data_表名 输出
| 输出位置 | 内容 |
|---|---|
| 第一行 | ExcelHeader 表头 |
| 第二行起 | Access 数据记录 |
| 工作表名称 | 默认 Data_表名 或配置的 SheetName |
Backup 输出
每次导入前会自动生成数据库备份文件,例如:
1 | Backup\DBBASE_20260108_150921.MDB |
这样即使导入数据有误,也可以通过备份文件恢复。
🔍 功能详解
1. 任意数据库选择
V2版不再固定绑定某个数据库文件名。
用户可以通过按钮选择:
1 | MDB |
数据库路径会保存到:
1 | Config_Settings.DatabasePath |
这使得工具可以适配不同项目、不同业务系统、不同 Access 数据库,不需要每次修改 VBA 代码。
2. 自动扫描 Access 对象
工具会读取 Access 数据库中的对象清单,并自动生成 Config_Tables。
可识别对象包括:
1 | TABLE |
同时会自动过滤常见系统对象,例如:
1 | MSys 开头的系统表 |
这样生成的表清单更加干净,便于用户维护。
3. 自动生成字段映射
V2版会对 Config_Tables 中的对象逐一读取字段,并写入 Config_Fields。
字段配置默认规则:
| 项目 | 默认值 |
|---|---|
ExcelHeader |
等于 AccessField |
ImportFlag |
普通字段为 1 |
RequiredFlag |
默认 0 |
IsAutoNumber |
自动识别或默认 0 |
Remark |
留空 |
用户可以后续手动修改中文表头、是否导入、是否必填等配置。
4. 指定字段导出
传统导出常见写法是:
1 | SELECT * FROM TableB |
这种方式依赖字段顺序,一旦表结构变化,后续导入可能出现错位。
V2版改为:
1 | SELECT [字段1], [字段2], [字段3] FROM [表名] |
字段来自 Config_Fields,更加稳定、清晰、可控。
5. 指定字段导入
导入时,V2版使用类似方式:
1 | INSERT INTO [表名] ([字段1], [字段2], [字段3]) |
这样即使 Excel/WPS 中列顺序发生变化,只要表头名称和配置一致,也能正确导入。
这比直接使用:
1 | INSERT INTO TableB SELECT * FROM ExcelSheet |
更加安全。
6. 支持中文表头
Access 字段名往往是英文、拼音或系统字段,例如:
1 | EmpNo |
用户可以在 Config_Fields.ExcelHeader 中改成更容易理解的中文:
1 | 工号 |
导出后工作表显示中文表头,导入时仍自动映射回 Access 字段名。
7. 必填字段校验
如果某些字段导入时不能为空,可以设置:
1 | RequiredFlag = 1 |
导入前程序会自动检查:
- 是否存在该表头;
- 对应列是否存在空值;
- 如果发现空值,会提示具体行号和字段名。
适合控制:
1 | 工号 |
等关键字段。
8. 自动编号字段保护
Access 表中常见自动编号字段,例如:
1 | ID |
这类字段通常不应该从 Excel/WPS 导入,否则容易出现主键冲突或自动编号异常。
V2版在字段配置中增加:
1 | IsAutoNumber |
并在导入字段映射时默认跳过自动编号字段,降低导入风险。
9. 导入前自动备份
导入操作存在风险,尤其是 Replace 模式会先清空目标表。
V2版在导入前自动执行数据库备份:
1 | Backup\数据库名_年月日_时分秒.mdb |
如果导入结果不符合预期,可以使用备份文件恢复。
10. Replace / Append 双模式
V2版支持两种常用导入模式。
| 模式 | 说明 | 适合场景 |
|---|---|---|
Replace |
清空目标表后重新导入 | 全量更新、重新整理基础资料 |
Append |
直接追加到目标表 | 增量导入、日志追加、批次数据导入 |
后续版本可继续扩展:
1 | Update:按主键更新 |
11. 批量导出常用表
如果 Config_Tables.TableType=1,该表会参与批量导出。
运行宏:
1 | ExportType1Tables |
或点击按钮:
1 | 批量导出 |
工具会逐个导出常用表,即使某个表失败,也不会中断全部任务,而是汇总失败信息。
12. 对象清单辅助检查
运行:
1 | ExportAccessObjectList |
或点击按钮:
1 | 对象清单 |
工具会输出当前数据库中实际可识别的 Access 对象到:
1 | Access_Objects |
用于排查:
- 是否选错数据库;
- 数据库里是否存在目标表;
- 表名是否拼写错误;
- Access 对象类型是否符合预期。
🧩 导入导出规则优先级
执行导出时,程序按以下规则判断:
- 当前选中行必须能识别出
TableName; - 优先读取
Config_Tables.SheetName; - 如果
SheetName为空,则使用ExcelDataPrefix + TableName; - 字段列表来自
Config_Fields; - 导出时读取该表全部配置字段;
- 自动生成或清空对应数据工作表;
- 第一行写入
ExcelHeader; - 第二行起写入 Access 数据。
执行导入时,程序按以下规则判断:
- 当前选中行必须能识别出
TableName; AllowImport必须为1;- 数据工作表必须存在;
Config_Fields.ImportFlag=1的字段参与导入;IsAutoNumber=1的字段默认跳过;- Excel/WPS 表头必须匹配
ExcelHeader; RequiredFlag=1的字段不能为空;- 导入前自动备份数据库;
- 根据
ImportMode执行Replace或Append; - 导入完成后提示行数和备份路径。
📅 版本演进
| 版本 | 核心改进 |
|---|---|
| v2.0 | 增加数据库选择、结构刷新、字段配置、按钮操作中心、Replace/Append 导入模式 |
| v1.8 | 增加导入前自动备份、必填字段检查、表头检查 |
| v1.6 | 增加指定字段导入,避免 SELECT * 字段顺序风险 |
| v1.5 | 增加 Config_Tables 和 Config_Fields 配置表 |
| v1.3 | 增加批量导出 TableType=1 表 |
| v1.2 | 优化 WPS 兼容,改用 ADO 后期绑定 |
| v1.0 | 初始版本,支持 Access 表导出到 Excel 与 Excel 导入 Access |
当前版本:v2.0 Production 实用稳定版
🔧 常用宏入口
| 宏名称 | 功能 |
|---|---|
CreateConfigTableButtons |
在 Config_Settings 创建操作按钮 |
SelectDatabaseFile |
选择 Access 数据库文件 |
RefreshDatabaseStructure |
刷新数据库结构并生成配置 |
GenerateConfigFields |
根据表清单生成字段配置 |
ExportSelectedTable |
导出当前选中的 Access 表 |
ImportSelectedTable |
将当前数据工作表导入 Access |
ExportType1Tables |
批量导出 TableType=1 的表 |
BackupDatabase |
手动备份当前数据库 |
CheckSelectedTableConfig |
检查当前表配置 |
ExportAccessObjectList |
导出 Access 对象清单 |
🖱️ 按钮说明
按钮统一位于:
1 | Config_Settings |
| 按钮 | 功能 |
|---|---|
| 选择数据库 | 选择 MDB / ACCDB 文件 |
| 刷新结构 | 自动生成或补充表配置与字段配置 |
| 生成字段 | 单独刷新字段配置 |
| 导出当前表 | 导出 Config_Tables 当前选中表 |
| 导入当前表 | 将对应数据工作表导入 Access |
| 批量导出 | 批量导出 TableType=1 的表 |
| 备份数据库 | 手动备份当前数据库 |
| 检查配置 | 检查当前表字段、表头、导入模式 |
| 对象清单 | 输出 Access 实际对象清单 |
| 参数配置 | 跳转到 Config_Settings |
| 表配置 | 跳转到 Config_Tables |
| 字段配置 | 跳转到 Config_Fields |
| 重建按钮 | 重新生成按钮 |
💡 常见问题
Q:为什么刷新结构后只看到一个表?
A:请先检查是否选对了数据库。可以点击 对象清单,查看当前数据库实际包含哪些 Access 对象。
Q:为什么生成字段配置时部分表失败?
A:可能是查询需要参数、对象不可读取、链接表失效、权限不足或对象名称异常。可以查看失败明细,并用 对象清单 辅助判断。
Q:为什么导入时提示找不到数据工作表?
A:请先执行 导出当前表,生成对应的 Data_表名 工作表,或检查 Config_Tables.SheetName 是否填写正确。
Q:为什么导入时提示缺少导入列?
A:Excel/WPS 第一行表头必须与 Config_Fields.ExcelHeader 一致。如果修改过表头,请同步修改字段配置。
Q:为什么自动编号字段没有导入?
A:自动编号字段通常不应导入,工具会根据 IsAutoNumber 默认跳过,避免主键冲突。
Q:Replace 和 Append 有什么区别?
A:Replace 会先清空目标表再导入,适合全量更新;Append 不清空原表,适合追加新数据。
Q:导入错了怎么办?
A:工具会在导入前自动备份数据库,可以从 Backup 文件夹中找到导入前的备份文件恢复。
Q:WPS 中可以使用吗?
A:可以。工具使用 ADO 后期绑定,不强制引用 ADO 库;文件选择窗口不可用时会自动使用输入框方式选择数据库路径。
Q:为什么按钮没有反应?
A:请确认宏已启用,并检查按钮是否正确绑定到 Btn_ 开头的入口宏,例如 Btn_ExportSelectedTable。
Q:为什么出现“二义性名称”?
A:通常是同一个模块里存在两个同名过程,例如两个 CreateConfigTableButtons。删除旧版重复过程,只保留新版过程即可。
⚠️ 注意事项
- 使用前请先保存当前工作簿。
- 第一次使用建议先点击
选择数据库。 - 导入前请确认
Config_Tables.AllowImport=1。 Replace模式会清空目标表,务必确认已备份。- 自动编号字段一般不要导入。
- 修改 Excel/WPS 表头后,请同步检查
Config_Fields.ExcelHeader。 - 必填字段如果为空,程序会阻止导入。
- 不建议对 Access 查询对象执行导入,除非该查询本身可更新。
- 如果数据库被其他程序占用,导入或备份可能失败。
.mdb在 64位 WPS/Office 环境下可能需要安装 ACE OLEDB 驱动。- 如果
FileDialog在 WPS 中不可用,可手动输入数据库路径。 - 建议定期清理
Backup文件夹,避免备份文件过多。 - 不建议直接删除
Config_Tables和Config_Fields,可通过刷新结构补充配置。 - 导入正式业务数据库前,建议先复制一份数据库进行测试。
🛠️ 适用场景
| 场景 | 示例 |
|---|---|
| Access 数据库维护 | 批量导出表数据到 Excel 修改后回写 |
| 考勤系统数据处理 | 导出人事、考勤、班次、请假等表辅助编辑 |
| 基础资料整理 | 对客户、人员、部门、物料等基础表进行维护 |
| 批量数据修正 | 在 Excel/WPS 中批量修改字段后导入 |
| 数据迁移辅助 | 从旧 Access 数据库导出并整理字段 |
| 业务系统辅助维护 | 对 MDB/ACCDB 后台数据进行可视化维护 |
| 查询结果导出 | 将 Access 查询结果导出为 Excel/WPS 表格 |
| 数据核对 | 将多个表导出后进行比对、筛选、检查 |
| 办公自动化 | 替代手工 Access 导入导出操作 |
| WPS 环境数据处理 | 在没有完整 Office 的环境下辅助维护 Access 数据 |
🧪 推荐使用流程
1 | 1. 打开工具工作簿 |
🔐 数据安全设计
V2版特别强化了导入安全:
| 安全机制 | 说明 |
|---|---|
| 导入前确认 | 导入前弹窗显示表名、模式、行数 |
| 自动备份 | 导入前自动复制数据库文件 |
| AllowImport 控制 | 可禁止某些表导入 |
| ImportFlag 控制 | 可禁止某些字段导入 |
| 自动编号保护 | 自动编号字段默认跳过 |
| 必填校验 | 防止关键字段为空 |
| 表头校验 | 防止导错列或字段错位 |
| Replace/Append 明确提示 | 避免误清空数据 |
| 失败提示 | 失败时显示具体错误原因 |
🔮 后续可扩展方向
V2版已经预留部分结构,后续可以继续扩展:
| 方向 | 说明 |
|---|---|
| Update 模式 | 按主键更新已有记录 |
| Upsert 模式 | 有则更新,无则新增 |
| 字段类型校验 | 按日期、数字、文本长度自动检查 |
| 默认值填充 | 空值自动填入默认值 |
| 导入日志 | 记录每次导入时间、用户、行数、结果 |
| 权限控制 | 对不同用户限制导入权限 |
| 字段备注读取 | 从 Access 字段说明中读取备注 |
| 数据差异对比 | 导入前比较 Excel 与 Access 差异 |
| 多数据库管理 | 支持保存多个数据库路径方案 |
| 一键恢复备份 | 从 Backup 文件夹选择备份并恢复 |
Access/EXCEL表格数据交换工具 V2版 - 下载地址
选择任意一个下载地址并点击,输入通行密钥 Access password,打开下载页面后在右上角点击下载按钮(如未出现按钮请刷新页面)
📞 技术支持
官网:
求助建议: http://xlcs.de/
邮件联系: admin@fdc.sd
📷 模块展示

XLCS — 让全成本测算更智能










