【问题标题】:Power Query + VBA/Macro Vs. VBA/Macro onlyPower Query + VBA/宏与。仅限 VBA/宏
【发布时间】:2017-04-13 16:45:12
【问题描述】:

我将在这里简要说明我拥有和需要的内容,稍后如果可以,我将编辑这篇文章并添加一个可重现的示例。

我的项目: 将 Oracle 数据库中的数据查询到 Excel 中的一个工作表中,然后使用 LOOKUP 过程将数据复制到第二个工作表中的可编辑表中。第二个工作表需要采用表格格式进行过滤,并且有一个下拉选项可以按日期范围过滤数据。数据需要每周刷新 1-2 次,仅由 1-2 名批准的工作人员完成。

关注点:
根据建议,我安装了 Power Query for Excel 2010,它需要依赖项才能工作。便利因素非常好,它使得可以编辑 SQL 查询而不会在 VBA 代码中乱七八糟。但是,依赖项设置(用于数据连接的 Oracle 客户端)限制了将其作为解决方案随意部署。

数据连接和查询以及数据查找都可以在 VBA 和分配的宏中完成。

问题: 我应该使用 Power Query 来查询数据,然后使用 VBA 来查询第二张表 LOOKUP 和日期范围过滤——还是应该全部用 VBA Excel 宏编写?

哪个更适合未来证明?使用 Power Query 是否有任何优势可以使此任务对非编码人员更加编辑友好?

谢谢!

【问题讨论】:

  • 无论您使用 Power Query 还是 VBA 中的 ADO,都需要安装 Oracle 客户端。这是数据库连接所必需的。至于编辑 SQL,您可以将查询存储在工作表中(如果需要则隐藏),以便轻松调整。

标签: sql excel excel-2010 powerquery vba


【解决方案1】:

这可能只能使用 PowerQuery 解决,无需 VBA。我不建议您将查询存储在 Excel 表中,最好将其移动到服务器上。视图或功能将是合适的。查询数据库、编辑此视图/功能仅适用于已批准的用户。 这更安全,并且只需要 1 个 Excel 工作簿。在 PowerQuery 中,您可以在刷新表时引用旧表副本,因此您可以保留输入的数据并获取新数据。

在我看来,您的项目是一个临时解决方案。

【讨论】:

  • 您说得对,解决方案是临时的。我主要需要一种简单的方法让分析师在将来迁移到新数据库时更改 TNS 信息。那时我不在,他们很可能很难让其他人改变这一点。
  • 如果我保留 PowerQuery,我可以使用 vba 复制查询的表,添加下拉日期范围过滤器和刷新按钮吗?有没有办法在 PowerQuery 中不使用 vba 来完成所有这些工作?
  • @JonStarnes PowerQuery 通常是表的数据源,因此您可以对生成的表执行任何操作,但请记住它会刷新(添加和删除行)。只需为您需要的列分配一个命名范围。
  • 我没有的是一个作为查询表的工作表,第二个工作表是一个可编辑的副本。因此,原始查询表保持完整,副本是工作人员使用的。
  • @JonStarnes 为什么需要查询表的单独副本?您的员工是只是添加新行,还是同时编辑现有数据?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
相关资源
最近更新 更多