正在阅读和阅读使用VBA或ADO + SQL更快地从excel工作簿写入excel工作簿?

时间:2015-12-16 19:16:44

标签: excel vba excel-vba ado dao

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

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

不确定,因为这在这里很出色。

2 个答案:

答案 0 :(得分:1)

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

我已经尝试了两者并且发现差异可以忽略不计,但是说我的查询非常简单,因为它只是为了搞乱(我实际上使用了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。

答案 1 :(得分:0)

SQL存储和访问数据的速度明显加快,使用SQL Server Express轻松设置。看起来你习惯使用SQL语句,应该沿着那条路走下去。您可以下载SQL Server here

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