Эффективное копирование диапазона из Excel в массив Word (VBA) - PullRequest
1 голос
/ 27 ноября 2010

Я имею дело с некоторыми проблемами производительности на Word-VBA. У меня есть лист Excel, к которому прикасаются каждый раз, когда я считываю значение из ячейки, что приводит к очень длительному времени выполнения. Есть ли более эффективный способ сразу прочитать лист Excel и вставить его в (строку?) Массив, для которого необходим только 1 доступ к листу Excel? Все остальные операции должны выполняться путем доступа к значениям в массиве.

Привет, poeschlorn

Ответы [ 2 ]

1 голос
/ 27 ноября 2010

Из вашего описания, хотя я не уверен в значении слова "затронут" в вашем вопросе, я предполагаю, что рабочая книга пересчитывается при открытии.Вы можете запретить это поведение, добавив его в рабочую книгу VBA:

Private Sub Workbook_Open()
    Application.Calculation = xlCalculationManual
End Sub 

Просто помните, что то же самое произойдет, когда пользователи откроют книгу вручную.

HTH

0 голосов
/ 27 ноября 2010

Я не совсем уверен, я понимаю, что вы хотите.Но на этом сайте поддержки Microsoft есть объяснение преобразования диапазона 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...