0

我有一个类似的性能问题,即从访问 excel 缓慢导出,通过设置单个单元格值循环将数据导出到 MS Excel:

objSheet.Cells(table_1_row_no + intcounter, table_1_colA_col_no) = table_1_array(intcounter, 0)

但是我的数据来自一个数组,并且需要在将其传输到那里后在 excel 中进行处理,因此我需要在传输数据后使用一个打开的工作表。因此,上述帖子中提到的方法都不是非常合适的。

我有一个从数据库中提取数据的 MS 访问应用程序,在将 vba 中的数据放入 Excel 之前,它会对其进行相当多的处理。因此,要传输的数据是数组而不是记录集。将其返回到记录集以允许使用 .CopyFromRecordset 方法的最简单方法是创建一个临时表和记录集,但除非没有更好的办法,否则这会导致一条相当长的路径下降。

在 Access 取回结果之前,电子表格会进行冗长的计算。我很想把它留在 excel 中,因为这让工程师可以灵活地使用它来根据不同情况进行调整(环境受到控制,因此无需担心未经授权的更改)。因此,仅删除 csv 或 excel 文件而不打开它的选项也不适合。

任何建议都非常感谢。

4

1 回答 1

0

我有同样的问题,尝试将您的数据源转换为记录集 如果您使用 EXCEL 2000、2002、2003 或 2007,则使用 CopyFromRecordset

'Copy the recordset to excel sheet we  start in cell A1
 sheet1.Cells(1, 1).CopyFromRecordset rst

如果记录集包含 OLE 对象字段或数组数据(例如分层记录集),请注意 CopyFromRecordset 将失败

于 2012-11-19T21:31:16.383 回答