![]() |
1
5
我觉得你在这里很好:
但剩下的将是惊人的缓慢,正如你所发现的。与工作表的交互有很高的开销,您要为每行的每一列支付开销。有办法解决这个问题。 最简单的是
我建议你先试试。 |
![]() |
2
2
看看这个。
|
![]() |
3
1
一种可能是将其分为两个阶段,但这取决于瓶颈在哪里。 如果是excel,那么只需将记录集行转换为csv类型的文件,完成后,创建excel对象并将整个文件导入到一个固定位置。 这可能比一个细胞一个细胞的操作要快。 如果不能将csv导入到工作表的固定位置(或者单元格不在连续的行或列中),我会将csv导入到新工作表中,然后从该工作表向模板工作表进行批量复制。 移动范围也应该比逐个单元的操作快。 批量导入和批量复制应该会给您带来一些很好的改进。我有一些工作表处理单个单元格,当您使用更复杂的excel功能时,这些单元格的速度提高了10倍(考虑使用=sum(a1..a999),而不是在vba中将每个单元格相加并将该值放在某个位置)。
至于如何从vba导入,我总是依赖于
现在我确信里面的大部分垃圾都可以删除,但你最好一次一个地删除,以确保不会出现问题。 您还可以使用类似于以下内容的修改来使用不同的工作表。
|
![]() |
4
0
您可以通过OLEDB连接访问它,而且速度会更快。 下面是我用来将数据从电子表格导入数据库的脚本中的一些代码。很明显,您会想要更改游标类型和锁类型,但是您已经知道了。
|
![]() |
Heinzi · 服务器端仅向前游标中断@标识 7 年前 |
![]() |
Jerry Dodge · 无法将空字符串传递到非空数据库字段 7 年前 |
![]() |
Error_2646 · 新的ADODB记录集是否创建了新的连接? 7 年前 |
![]() |
J_Go · ADO+VBA sheetname返回值添加额外字符 9 年前 |
![]() |
rheitzman · 使用ADO读取LDAP描述 10 年前 |