本节摘要:外部数据进库的标准姿势不是直接导入正式表,而是"暂存区模式":先进独立导入表,体检清洗后用追加查询放行。本节以供应商文本对账单为例走完全流程,并整理一份字段类型映射避坑清单。
华彩的那份供应商对账文件长得面目模糊:第一行是表名而非列名,日期长着"二零二六年三月五日"的脸,数量栏里混着一格"已取消"。这就是现实世界的进口货——没经过检验检疫。若一键直灌正式表,参照完整性会拦下一部分,但漏网之鱼足够让你月底对账翻车。
规则只有一条:外部数据永远先落到一张专用暂存表,一切字段都是短文本,零约束零关系。 数据在暂存区里接受清洗,合格后追加进正式表,暂存表清空待下一批。
为什么这么麻烦?三个理由,每条都来自真实学费:

按图纸施工。第一步建暂存表"暂存对账",五个字段全部短文本:来源方、商品、日期原文、数量原文、单价原文。第二步走导入向导:外部数据选文本文件 → 选"追加"目标暂存表 → 预览界面里指定分隔符与首行含义 → 完成。这一步向导会把每行拆得整整齐齐,但一格不错不等于内容能用,所以才需要第三步。
第三步是灵魂环节,三条更新查询把原文翻译成规范值:
-- 其一 汉字日期换算成引擎认识的样子 UPDATE 暂存对账 SET 日期标准化 = DateSerial( CInt(Mid(日期原文,1,InStr(日期原文,"年")-1)), CInt(Mid(日期原文,InStr(日期原文,"年")+1,InStr(日期原文,"月")-InStr(日期原文,"年")-1)), CInt(Mid(日期原文,InStr(日期原文,"月")+1,InStr(日期原文,"日")-InStr(日期原文,"月")-1))); -- 其二 数量里的非数字内容现形 UPDATE 暂存对账 SET 状态标记 = IIf(IsNumeric(数量原文), "", "需人工复核"); -- 其三 编号去空格并统一大小写 方便和主档对上 UPDATE 暂存对账 SET 商品 = Trim(UCase(商品));
Mid 与 InStr 的组合是处理非标字段的瑞士军刀:前者负责切段,后者报告关键字的落点位置。这三句一跑,暂存表就从"货柜"变成了"待检合格的净货仓"。第四步主键冲突预检——用查找不匹配项查询比对正式表的单号唯一索引,如有重复先裁决是补录还是跳过;第五步追加查询按列位映射搬进正表;收尾清空暂存表,这一批通关完成。第二次再遇到同格式文件时,中间三步可以直接另存为宏序列一键复演。
出口比入口简单,但同样有三条经验值得白纸黑字:
Excel 是最高频的进出对象,单独立传。三个经典事故请对号防范:
长数字自动变身科学计数法。 供应商发来的台账里,十二位的物料编号显示成"4.51E+11",后三位已经被 Excel 吃掉且不可恢复。防法在上游:让对方先把该列设成文本格式再填,或改发 CSV;已在库中的就只能找对方补发。反过来导出时同理,纯数字长编码在 Access 里建表时就该是短文本。
日期像日期但不是日期。 表面写着 2026/8/9 的列,混着几个"8月9日""2026.8.9",向导按首行嗅探类型时整列判成文本或干脆报错。应对套路固定:一律以文本身份进暂存表,再用 2.2 讲过的 DateSerial 家族清洗,别信向导的类型猜测。
幽灵区域。 曾经有数据的空单元格带着不可见格式赖着不走,向导宣称"将导入十万行",实际只有四千行有效。开工前先在 Excel 里把尾部空行列删除再保存,或者干脆复制有效区域粘贴进新工作簿。判断是否中招很简单:对比源文件大小与预期行数,差一个数量级就是它在作怪。
问:链接到 Excel 让它当在线表格用行不行? 应急可以(外部数据选链接),数据量小、单人维护时尚可;但它没有完整性约束、性能随文件增大骤降,长期方案仍应是真正入库。
问:导入向导能不能记住这次的设置下次直接用? 能,向导收尾处勾选"保存导入步骤",之后在外部数据菜单的一键重演里点一下即可——固定格式的月度文件配合暂存宏,整个流程缩到十秒。
同一家供应商的固定格式对账单每月一张,人肉点向导很快就会腻。两条自动化的路按投入递增:
轻量路:宏序列加启动参数。 把暂存、清洗、追加、清空四步录成一个宏,再用带命令行参数的方式打开这个库直接运行该宏,交给 Windows 的计划任务每天凌晨执行。全程零代码,一个上午能配好;代价是容错弱——文件格式一变它就停摆等人工。
稳健路:VBA 编排加日志。 用代码模块调度同样的步骤,每一步的结果写进导入流水表(来源、时间、行数、成功与否),出错时给指定邮箱发提醒而不是干等。多花半天开发换来的可观察性,在有四五家定期供货商之后物超所值。
无论哪条路都要保留一条安全底线:自动化入口永远指向【待导】专用文件夹,正式表只认经过放行查询的数据。机器跑得再勤,也不能替人做"要不要入库"的决定。
进口的货有了仓库管理办法。下一节讲怎么把这些货变成 Word 文件、Outlook 邮件——Office 生态才是 Access 真正的主场。