Копирование листов в VBA запаздывает в одном WB, но не в другом - PullRequest
0 голосов
/ 11 января 2019

Мой код VBA работает на одной книге, но не на другой.

В итоге код:

Создает необходимый конечный результат в обоих Но это занимает около минуты в одном Но в остальном идентично Названия листов верны

.Sheets (Array ("TotalReimbursement", "ReadyForExport")). Копировать где он отстает

Где искать ошибку? Учитывая тот же код, который отлично работает в другой электронной таблице, кажется, что сам код не для того, чтобы искать.

Sub EmailReimbursementRequest()

Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim TheActiveWindow As Window
Dim TempWindow As Window

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Set Sourcewb = ActiveWorkbook

With Sourcewb
    Set TheActiveWindow = ActiveWindow
    Set TempWindow = .NewWindow
    .Sheets(Array("TotalReimbursement", "ReadyForExport")).Copy
End With

TempWindow.Close

Set Destwb = ActiveWorkbook

Больше кода оттуда .... Это должно сгенерировать письмо примерно через секунду с приложениями.

1 Ответ

0 голосов
/ 11 января 2019

Может быть связано с рядом проблем:

  • Большое количество формул, которые нужно пересчитать
  • Формулы, которые ссылаются на внешние источники, для пересчета которых требуется некоторое время
  • Большое количество форматирования (например, если границы / затенение были применены ко всему рабочему листу, а не только к соответствующим областям)
  • Большой «Использованный участок»
  • Большое количество именованных диапазонов
  • Большое количество объектов и встроенных изображений

Начните с удаления ненужного форматирования, удалите все из всех неиспользуемых ячеек (выберите все строки под вашими данными, затем очистите и удалите, затем выберите все столбцы справа от ваших данных, затем очистите и удалите), сохраните и снова откройте, затем попробуйте запустить еще раз.

Кроме того, какова цель создания временного окна? Это кажется ненужным из видимого кода ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...