Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Можно ли ускорить процесс выполнения макросов???? Добавлено: 21.01.08 12:54  

Автор вопроса:  Таня | ICQ: 410031407 
Подскажите, пожалуйста. Можно ли как-то ускорить процесс выполнения макросов. У меня есть лист Excell, в ячейках связи с другими файлами, при открытии моего файла идет долгий процесс обновления, можно ли его какими-нить способами ускорить??? Спасибо

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 21.01.08 13:06
Не думаю, что можно ускорить этот процесс. Разве что купить более быстрый компьютер...

Ответить

Номер ответа: 2
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #2 Добавлено: 21.01.08 15:03
Если честно, то не очень понятно. При чём тут макросы, если у вас Excel подвисает, когда вы открываете книгу со связамис другими файлами. Удалите все связи и книга будет быстро открываться.

Если ли же вы запускаете макрос и он долго обрабатывает информацию (долго работает), то
1) по возможности откажитесь от метода Select и Activate в вашем макросе
2) используйте эту конструкцию в ваших макросах:
Sub MyMacro()
'выключаем некорые параметры для увеличения скорости обработки файла
    With Application
        .ScreenUpdating = False 'отключение обновление экрана
        .Calculation = xlCalculationManual  'отключение пересчёт формул вручную
        .EnableEvents = False 'отключение событий
        .DisplayAlerts = False 'отключение предупреждающих сообщений
        .ErrorCheckingOptions.BackgroundChecking = False 'отключение фотоновой проверки ошибок
    End With

    'ОСНОВНОЙ КОД....

    With Application
        .ScreenUpdating = True
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
        .DisplayAlerts = True
        .ErrorCheckingOptions.BackgroundChecking = True
    End With
End Sub

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 22.01.08 13:51
Pavel, хороший пример! Мне всегда раньше хватало только
.ScreenUpdating = False
.Calculation = xlCalculationManual

Проверка формул на ошибки у меня и так отключена, а о каких предупреждающих сообщениях идёт речь, что-то непонятно. Можно пояснить. Я бы не стал отключать эти сообщения в случае, если есть риск возникновения циклических ссылок.

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

Ответить

Номер ответа: 4
Автор ответа:
 Pavel



Вопросов: 0
Ответов: 36
 Профиль | | #4 Добавлено: 22.01.08 13:56
ну, это я по максимому привёл пример. Я тоже использую указанные тобой 2 строки.
А отключение предупрежд. сообщений я использую только так. Как пример

Sub Макрос1()
    Application.DisplayAlerts = False
    Sheets("Лист3";).Delete
    Application.DisplayAlerts = True
End Sub


EnableEvents отключаю, чтобы отключить какой-нибудь свой же обработчик, типа
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Ответить

Номер ответа: 5
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #5
Добавлено: 24.01.08 15:21
Ok, спасибо! Теперь всё ясно.

Sheets("Лист3";).Delete - жёстко ты с ним :)

Ответить

Номер ответа: 6
Автор ответа:
 dimka



Вопросов: 1
Ответов: 4
 Профиль | | #6 Добавлено: 26.01.08 17:26
Конечно можно. Нужно с макросов, записанных автоматически в Exell поубирать половину лишних комманд, кторые формирует сам Exell

Ответить

Номер ответа: 7
Автор ответа:
 DrugON



ICQ: nospam 

Вопросов: 10
Ответов: 53
 Профиль | | #7 Добавлено: 14.03.08 02:22
Зачот =)

Чтобы макросы не тормозили - удалите их =)
Димке респект за самый грамотный ответ =)

Ответить

Номер ответа: 8
Автор ответа:
 dimka



Вопросов: 1
Ответов: 4
 Профиль | | #8 Добавлено: 14.03.08 13:17
Спасибо!

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам