如何在输入文件变更时保存并重新运行MS Access查询步骤?
在MS Access中实现CSV更新时自动生成结果表
当然可以实现类似Power Query的自动更新效果,以下是几种实用方案:
1. 基础方案:保存查询+手动刷新
你创建的查询本身就能直接保存为Access的查询对象。当CSV文件更新后:
- 如果查询基于导入的本地表,先重新导入CSV覆盖旧表,再运行查询即可生成最新结果;
- 如果是链接CSV而非导入(推荐),直接打开或运行查询,就能自动读取CSV的最新数据,无需重复导入。链接CSV的操作:外部数据→导入并链接→文本文件→选择"链接到数据源,创建链接表"。
2. 自动触发更新的进阶方案
用VBA实现自动运行查询
如果需要自动生成结果表(比如生成表查询),可以写简单的VBA代码来触发更新:
- 打开VBA编辑器(Alt+F11),插入模块,写入以下代码:
Sub RefreshResultTable() ' 关闭更新提示 DoCmd.SetWarnings False ' 运行你的生成表查询,替换为实际查询名称 DoCmd.OpenQuery "Qry_Generate_Result" ' 恢复提示 DoCmd.SetWarnings True End Sub
- 触发方式:
- 数据库打开时自动运行:创建名为
AutoExec的宏,添加"RunCode"操作,调用上述子程序,每次打开数据库就会自动更新结果表; - 定时自动更新:借助Windows任务计划,设置定期打开该Access数据库(需确保数据库信任宏),结合
AutoExec宏实现定时刷新。
- 数据库打开时自动运行:创建名为
数据宏触发(有限支持)
Access 2010及以上版本支持数据宏,但CSV作为文本格式的链接表,数据变更的触发事件支持有限,更适合本地表或SQL Server等链接表。如果用本地表,可以给导入后的表设置"更新后"数据宏,触发运行查询更新结果表。
3. 内置Power Query方案(Access 2016+)
如果更习惯Power Query的操作逻辑,Access内置了Power Query功能:
- 从"数据"选项卡→"获取数据"→"从文本/CSV"导入两个文件,在Power Query编辑器中完成合并、转换等操作;
- 将处理后的数据加载到Access表中;
- 后续右键点击该表选择"刷新",或通过"外部数据"→"刷新所有",就能一键同步CSV的最新数据,也可以用VBA设置定时刷新。
内容的提问来源于stack exchange,提问作者Rasec Malkic
相关产品推荐
相关产品推荐

