【问题标题】:Is reading & writing to an excel workbook from an excel workbook faster using VBA or ADO + SQL? [closed]使用 VBA 或 ADO + SQL 从 excel 工作簿读取和写入 excel 工作簿是否更快? [关闭]
【发布时间】:2015-12-16 19:16:44
【问题描述】:

我有一个 excel 工作簿,其中包含几个子例程/函数,它们对外部 excel 工作簿进行大量读取和写入。这几乎就像外部 excel 工作簿是各种数据库一样。

对于我必须执行的所有读取和写入操作,停止使用 VBA 循环并使用 ADO 和 SQL SELECT/INSERT/UPDATE/DELETE 语句会更快吗?

不确定,因为这是 excel 到 excel 的交流。

【问题讨论】:

  • @pnuts 我没有专家见解,因为我不完全了解这项技术。我真的不知道在理论上或其他方面是否有任何效率,也不知道如何衡量它。希望向已经将这一切都撕裂的人学习,而不是从头开始构建所有的分析和倾向。花几个星期学习 ADO 并开发一种转换我的代码的方法却发现我完全浪费了我的时间,这将是一种耻辱。
  • 我认为这是我在其他任何地方都没有在网上找到的有效讨论。幽默的是,一些对讨论毫无贡献的人仅仅因为他们没有答案而投了反对票。
  • 这是一个特定的编程问题。我应该对我的例程进行编程以使用 ADO 或 VBA 提取数据吗?如果你不知道,嘘,。什么鬼?
  • 不,我希望专家洞察力从技术角度了解在从 Excel 检索大量数据并将其写入外部 Excel 工作表时哪种技术更适合速度。有一些事实要分享,你和我都没有,所以让我们停止讨论,等待专家回答。

标签: vba excel ado dao


【解决方案1】:

我相信您说的是使用电子表格作为活动数据对象而不是导出到 SQL 数据库的 ADO 调用,是吗?

我已经尝试了这两种方法,但发现差异可以忽略不计,因为我说我的查询是一个非常简单的查询,因为它只是为了搞乱(我实际上使用了 CSV 或 TXT 文件或带有提示文件的东西)。

我仍然相信 ADO 可以使用 Excel 到 Excel 来简化查询,但我可能错了。如果我通过直接 VBA 执行 Excel 到 Excel,我通常会将数据读入数组并在内存中进行操作,然后对我的工作表进行一次更新,这是你可以进行直接 VBA 操作的最快方法,更多工作表更新会大大减慢你的速度.

根据查询的复杂性,使用 ADO 可能会被认为有点过头,但最终还是由您决定,归结为您最熟悉的方式。如果您对其中任何一个都感到满意,请编写两者并进行一些速度测试。如果您为其他想知道同样事情的人做些什么,我很乐意看到结果。

编辑:如果您要在数组中做所有事情,请记住您可以在数组中使用多个维度,电子表格是具有行和列的二维,您可以拥有大量维度。想象一下:你有一个太阳系,有一个行星,有海洋,有一艘船,有一个容器,有一个盒子,里面有 7 个维度的物品,但你可以通过许多太阳系、行星和海洋的坐标来操纵任何一个物品和船等。多维数组有很多功能,老实说,唯一的限制是绕开它(确保在开始之前画出一张小地图;))到达一个项目就像简单如 MyItem(2,4,2,3,4,5,6) 如果你知道你在太阳系 2,行星 4,海洋 2,船 3 容器 4 盒子 5 项目 6。

【讨论】:

  • 在您成功回答后,他们将这个话题搁置为“太宽泛”。适度有时很有趣。无论如何,你的答案是完美的。谢谢你:)
【解决方案2】:

SQL 存储和访问数据的速度明显更快,并且使用 SQL Server Express 易于设置。看来您对使用 SQL 语句很满意,应该走这条路。可以下载SQL Serverhere

基本上,在 SQL 中,软件不会像 excel 那样存储所有显示属性。因此,在 Excel 中,Excel 正在存储值、格式(100 种不同的属性)并等待您修改值。 SQL 只是存储原始值和一些信息,如数据类型。您可以将 Excel 工作表直接导入 SQL,如果您保留标题,它将为您设置列。

【讨论】:

  • 我没有得到 OP 想要迁移到 Sql Server 的印象,而是将 SQL 与 ADO 一起使用,它可用于将 excel 工作表视为“表”。数据需要以特定方式格式化才能正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2011-04-22
  • 1970-01-01
  • 2014-02-24
相关资源
最近更新 更多