如何用Power Query动态连接DB工作簿所有表格且无需VBA宏
无需VBA动态获取DB工作簿中所有表格的方法
方法1:直接通过Power Query加载工作簿内所有表格
- 打开需要关联的工作簿,点击「数据」选项卡 →「获取数据」→「从文件」→「从工作簿」,选中你的DB工作簿。
- 在弹出的导航器窗口里,不要选择单个表格,直接点击「转换数据」进入Power Query编辑器。
- 在左侧的查询设置面板中,删除
源步骤之后的所有步骤(仅保留第一步)。此时编辑器内会显示整个DB工作簿的结构,包含所有工作表和表格。 - 找到
Tables列(若未显示,先展开工作簿的层级结构),右键点击该列,选择「添加自定义列」,输入公式:Table.Combine([Tables]) - 删除其他无关列,只保留这个自定义列,再点击列标题旁的展开按钮,将所有表格的字段展开。
- 关闭并上载数据到工作表,后续DB工作簿新增表格时,只需在关联工作簿的Power Query中点击「刷新」,新表格的数据就会自动加载。
方法2:用文件夹数据源批量识别(适合DB结构规范的场景)
如果DB工作簿中每个工作表都对应标准结构化表格,且命名规律统一,可以用文件夹作为数据源:
- 点击「数据」→「获取数据」→「从文件」→「从文件夹」,选择DB工作簿所在的文件夹。
- 在导航器界面,添加自定义列,输入公式:
Excel.Workbook([Content], true)(参数true会强制加载所有结构化表格) - 展开这个自定义列,找到
Tables字段继续展开,最后用Table.Combine将所有表格的数据合并到一起。 - 刷新查询时,DB工作簿新增的带表格工作表会被自动识别并加载。
关键注意点
- DB工作簿内的表格必须是结构化表格(通过Ctrl+T创建),而非普通单元格区域,否则Power Query无法自动识别。
- 刷新时若DB工作簿未打开,需确保Power Query中的文件路径为绝对路径,或勾选「允许后台刷新」选项。
内容的提问来源于stack exchange,提问作者Kirill Kazakov
相关产品推荐
相关产品推荐

