使用 VBA 或 ADO + SQL 从 excel 工作簿读取和写入 excel 工作簿的速度更快吗?



我有一个excel工作簿,它有几个子程序/函数,可以对外部excel工作簿进行大量的读写操作。这几乎就像外部excel工作簿是一个数据库。

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

不确定,因为这是一种优秀的沟通方式。

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

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

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

根据查询的复杂性,使用ADO可能会被认为有点过头,但最终这是你的决定,归根结底是你最满意的。如果你对其中任何一个都很满意,那就对两者都进行编码,并进行一些速度测试。如果你为其他人做同样的事情,我很想看看结果。

编辑:如果你在数组中做任何事情,请记住,你可以在数组中使用多个维度,电子表格是一个有行和列的二维,你可以有很多维度。想象一下:你有一个太阳系,有一颗行星,有一片海洋,有一艘船,有一个容器,有一盒7维的物品,但你只需知道许多太阳系、行星、海洋和船只等的坐标,就可以操纵任何一件物品。多维数组有很大的力量,老实说,唯一的限制是你要仔细思考(在开始之前一定要画一张小地图;))如果你知道自己在太阳系2、行星4、海洋2、船3、集装箱4、箱子5、物品6上,那么找到一个物品就像MyItem(2、4、2、3、4、5、6)一样简单。

SQL在存储和访问数据方面明显更快,而且使用SQL Server Express设置起来也很容易。使用SQL语句似乎很舒服,应该走这条路。你可以在这里下载SQL Server

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

最新更新