Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 23.11.2006
Сообщений: 4

Сильно тормозит Excel

23.11.2006, 21:49. Показов 5367. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Господа, подскажите плз ответ на вопрос... написал что-то такое, которое берет файлы.xls из определенной папки (C:my), делает что-то с файлом, а потом копирует в итоговый файл область (rez.xls), причем каждый раз смещая строчку вниз. прим.: я в этом деле новичек вообще, плз помогите.
Текст прилагаю:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub open_f()
' задание переменных пути и имени файла, строки
Dim MyPath As String
Dim MyName As String
Dim A As Object
' переменные копирования - вставки, области
Dim paste_cells_in As Range
Dim paste_cells_out As Range
' переменная цикла
Dim i As Long
' установка пути
MyPath = "c:my"
MyName = Dir(MyPath)
'начало цикла
i = 1
'делать пока файлы не закончатся
Do While MyName <> ""
Workbooks.Open (MyPath + MyName)
ActiveSheet.Unprotect ("ххххх")
' записаный макрос
    Range("W17").Select
    Selection.EntireColumn.Insert
    ActiveCell.Formula = "=K45"
' копируем область
Set paste_cells_in = Range("N17:BY17")
paste_cells_in.Copy
' результирующая таблица - активное окно
Windows("rez.xls").Activate
' вставить как зачения
Set paste_cells_out = Range(Cells(i, 1), Cells(i, 65))
paste_cells_out.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    i = i + 1
Workbooks(MyName).Close SaveChanges:=False
'закрыть не сохраняя
MyName = Dir
Loop
End Sub
Собственно вот...
после 30-40 файла который он открывает начинает тормозить Excel, причем очевидно что на выгрузке файла. Короче скорость выполнения операций замедляется с увеличением кол-ва открытых файлов. Вопрос "что делать?".
Заранее благодарен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.11.2006, 21:49
Ответы с готовыми решениями:

Я очень сильно запустил свой ПК,посоветуйте что нибудь т.к. очень сильно тормозит
Сильно запустил свой ПК,при включении приходится ждать около часа чтобы не лагал так сильно,при переустановке Windows лагает также

Battlefield 3 сильно тормозит
Всем привет,ситуация такая,есть лицензия батлы,по онлайну жудко тормозит,пинг в среднем 15-30, фпс вообще показывает то 10 то 20, в итоге...

Сильно тормозит интернет
Система Ubuntu 10.10. Дня четыре назад начал очень сильно тормозить интернет. Думал проблемы с сетью, бывает всякое... Невозможно...

7
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
23.11.2006, 23:49
У меня оже есть программа, которую уже давно написал и ее давно эксплуатируют в соседнем отделе. Сделана по тому же принципу, извлекает все ХLS файлы из заданного каталога (причем их обычно не меньше 90 штук), извлекает информацию из всех листов, закрывает файл, но, правда инфу заносит в МDB-базу.
Я просмотрел Ваш код, честно говоря, ничего не вижу неправильного <IMG style="CURSOR: pointer" onclick="AddSmileyIcon('smileys/smiley5.gif')" alt=Confused src="http://conf.nautilus2001.ru/smileys/smiley5.gif" border=0>. Ну некоторые операторы у меня другие и все-го то. Мало того, не поленился, прогнал свои 90 файлов через Вашу прогу, имя каталога только поменял. Все отработало отлично, без тормозов, за 1.5 минуты <IMG style="CURSOR: pointer" onclick="AddSmileyIcon('smileys/smiley1.gif')" alt=Smile src="http://conf.nautilus2001.ru/smileys/smiley1.gif" border=0>
Поэтому могу только предлжить варианты:
1. Попробуй установить какую-нибудь прогу, которая показывает кол-во свободной памяти (физической), и понаблюдай показания при работе проги. Если кол-во занятой памяти будет постоянно увеличиваться, то значит глючит что-то, не идет высвобождение памяти.
2. Посмотри, какие приложения запущены, если например Касперский стоит, выруби его на время работы, вообще надо попробовать отключить все.
3. Вот еще смешная проверка. Если комп в сети, выдернуть фишку сетевого кабеля. Если какой-то вирус, то возможно он утихнет (Кстати один раз так вычислил, что вирус на компе, т.к. происходили непонятные задержки)

4. Попробуй удалить Офис, почисть реестр поиском слова "Microsoft Office" от всяких упоминаний, затем установить снова.
5. Попробуй создать совершенно новый чистый файл ХLS, скопируй туда макросы через Copy-Paste, но не в коем случае через Save As. Короче надо возродить файл rez.xls с нуля.

ЗЫ. Единственное, я не совсем понял, торможение настает внезапно или постепенно нарастает. Если внезапно, то попробовать вычислить тот файл и исключить его из списка.
0
999 / 358 / 135
Регистрация: 27.10.2006
Сообщений: 764
24.11.2006, 01:59
Возможно надо обнулять Set paste_cells_in = Nothing перед Loop (я точно не знаю, но попробуй). А вот отключить бы визуализацию, что позволит значительно ускорить время выполнения макроса, я думаю, нужно, т.е. в начале процедуры написать
Visual Basic
1
2
3
4
5
Sub open_f()
    Application.ScreenUpdating = False
    ''''''Основной код
    Application.ScreenUpdating = True
End Sub
P.S. 'желательно использовать эту конструкцию в каждом макросе (по возможности)
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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
0
2 / 2 / 0
Регистрация: 09.09.2009
Сообщений: 118
24.11.2006, 14:31
2 Pavel55
Да, это все правильно, но дело в том, что у меня на компе этот макрос отработал на ура, не было тормозов и каждый цикл отрабатывал то же время, что и предыдущий. Значит все-таки дело не в макросе, а в других причинах, о которых я и написал.
0
6 / 6 / 3
Регистрация: 17.10.2007
Сообщений: 1,119
26.11.2006, 04:20
Посмотрите, не остаются ли висеть в памяти процессы Excel
0
0 / 0 / 0
Регистрация: 23.11.2006
Сообщений: 4
30.11.2006, 16:24  [ТС]
процессор постоянно на 99%, по мере работы постипенно увеличивается объем используемой памяти... есть панацея?
0
0 / 0 / 0
Регистрация: 23.11.2006
Сообщений: 4
30.11.2006, 16:25  [ТС]
Большое спасибо! попробую все методы поочередно
0
0 / 0 / 0
Регистрация: 23.11.2006
Сообщений: 4
30.11.2006, 16:30  [ТС]
Спасибо за код! немного ускорился (на начале процесса), но потом, опять начал тормозить...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.11.2006, 16:30
Помогаю со студенческими работами здесь

Комп сильно тормозит
Комп сильно тормозит хотя проверил антивирусниками.

Очень сильно тормозит ЖД
Добрый вечер! Жесткий диск WDC WD 10EARX 1TB При загрузке появляется надпись ''Подготовка автоматического восстановления'' и...

Сильно тормозит компьютер
загружается быстро, проходит 5-10 минут комп начинает тормозить по страшному. логи прилагаю

Hdd сильно тормозит
Доброго времени суток. У меня стоят два харда, разбитый на два терабайтник и двухтерабайтник. Первому уже лет шесть, на одной из его...

Firefox сильно тормозит
Простите за такой выпуск пара, товарищи, но просто сил уже нет. Я хочу хотя бы понять, я один с этими проблемами мучаюсь или нет? Я сижу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru