Excel 2003:为什么创建指向其他电子表格的链接需要这么长时间?

时间:2013-01-20 13:31:32

标签: performance excel vba hyperlink

我的Excel应用程序创建指向其他Excel文件的链接。创建一个单元格的链接大约需要1秒钟,但我有几百个单元格要链接,所以它很慢。 无论源文件是打开还是关闭,速度都没有区别。但是,我注意到,手动创建链接(例如,通过手动将包含链接的公式复制并粘贴到其他单元格中)在打开源文件时要快得多。

在我的程序中,我已配置 Application.Calculation是手动而不是自动。

我尝试以两种方式完成链接(请注意这不是真正的代码,但我希望它显示我的意思):

1。 使用,将公式链接从Range("A1")复制到外部源 在范围内的每个Cell上的foreach循环:

Cell.FormulaR1C1 = Range("A1").FormulaR1C1

2。 将公式从Range("A1")复制到另一个范围,而不使用foreach循环:

Range("thisIsMyTargetRange").FormulaR1C1 = Range("A1").FormulaR1C1

这两种方法都同样慢,正如我所说,我已经检查了上述两种方法,并打开了源文件。

有没有办法加快速度?有没有人对Excel 2003中的链接机制有足够的了解,提供有关如何提高链接性能的建议?

2 个答案:

答案 0 :(得分:1)

有公式是否相关?如果不使用.value而不是.formular1c1

此外,如果范围大小相同,则使用范围副本而不是循环。例如

range(a1:a500).value = range(a1:a500)

添加了替代方法:

另外,另一种方法是使用数据导入功能创建一个表,该功能在文件打开时刷新,如果表单是你所使用的。然后,如果您想要该表的位,请使用导入表/表中的数据。这将在打开文件时保持更新或链接仅一个大导入。

答案 1 :(得分:0)

我不得不这样做几个月一次的数据。

打开要从中复制数据的文档。然后将包含该数据的任何工作表复制到您正在使用的工作簿中。从中获取数据,然后从工作簿中删除这些工作表。在宏中执行此操作,以便可以快速重复地完成。