【发布时间】:2020-07-07 05:43:19
【问题描述】:
我正在处理 word-VBA 的一些性能问题。我有一个 excel 表,每次我从单元格中读出一个值时都会触摸它,这会导致执行时间很长。 有没有更有效的方法可以一次读出 excel 表并将其粘贴到(字符串?)数组中,以便只需要 1 次访问 excel 表? 所有其他操作都应通过访问数组中的值来完成。
你好,波斯克伦
【问题讨论】:
标签: vba performance ms-word
我正在处理 word-VBA 的一些性能问题。我有一个 excel 表,每次我从单元格中读出一个值时都会触摸它,这会导致执行时间很长。 有没有更有效的方法可以一次读出 excel 表并将其粘贴到(字符串?)数组中,以便只需要 1 次访问 excel 表? 所有其他操作都应通过访问数组中的值来完成。
你好,波斯克伦
【问题讨论】:
标签: vba performance ms-word
根据您的描述,虽然我不确定您问题中“触摸”的含义,但我猜工作簿在打开时正在重新计算。您可以通过将其添加到 Workbook VBA 来禁止此行为:
Private Sub Workbook_Open()
Application.Calculation = xlCalculationManual
End Sub
请记住,当您的用户手动打开工作簿时也会发生同样的情况。
HTH
【讨论】:
我不太确定,我明白你想要什么。但是在这个Microsoft Support Site 上是关于将Excel 范围转换为数组的解释。 Word 中应该可以实现相同的功能。
简而言之:
Sub Sheet_Fill_Array()
Dim myarray As Variant
myarray = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Range("a1:a10").Value = Application.WorksheetFunction.Transpose(myarray)
End Sub
【讨论】: