|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Подозреваю, что в коде где-то что-то концептуально неправильно, из-за чего может утекать память. Для импорта в акцесс обрабатываю предварительно кучу экселек таким кодом: Код: vbnet 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.
Ничего вроде не придумывал, взял свой работающий код 2летней давности и немножко допилил. Есть что-то концептуально неправильное, из-за чего память может утекать? Обработка может быть примерно такой: Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 17:45 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
грязный комплектовщикПодозреваю, что в коде где-то что-то концептуально неправильно, из-за чего может утекать память. Да. Вот тут: грязный комплектовщик If lng_FileCount > 0 Then Set xla = GetObject(, "Excel.Application") Else Set xla = New Excel.Application End If Загрузите ProcessExplorer или иной аналогичный инструмент. Запустите. И смотрите, сколько Экселей запускает этот фрагмент, и что с ними происходит дальше.... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 18:07 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Akinaгрязный комплектовщикПодозреваю, что в коде где-то что-то концептуально неправильно, из-за чего может утекать память. Да. Вот тут: грязный комплектовщик If lng_FileCount > 0 Then Set xla = GetObject(, "Excel.Application") Else Set xla = New Excel.Application End If Загрузите ProcessExplorer или иной аналогичный инструмент. Запустите. И смотрите, сколько Экселей запускает этот фрагмент, и что с ними происходит дальше.... А как правильно? Сдаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 18:18 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
грязный комплектовщик, Вообще лучше за цикл вынести обращение к экземпляру Excel: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 19:31 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Упс, ошибся в одной строке: Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 19:31 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
The_PristВообще лучше за цикл вынести обращение к экземпляру Excel Не только. Надо запоминать, был ли создан новый инстанс, и если да - потом его quit-ить... А лучше безусловно в начале создавать, а в конце квитить - чтобы не ковыряться с воркспейсами. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.08.2013, 22:41 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Akina, Согласен. Полагаю, автор как-нить догадается поставить флаг в моем коде. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 00:40 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Спасибо за советы. Странное дело, обрабатываю 305 файлов, на 306 макрос просто прекращается, без выдачи ошибки. Запустил по новой - на 57 файле заткнулась работа. В итоге в 3 захода 426 экселек обработалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 11:12 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Один раз уже говорил: AkinaЗагрузите ProcessExplorer или иной аналогичный инструмент. Запустите. И смотрите, сколько Экселей запускает этот фрагмент, и что с ними происходит дальше.... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 11:20 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Akina, а может попробовать Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 11:58 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА , да мне-то оно зачем... а ТС вроде задачу выполнил (и, как я понял, она вообще одноразовая). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 12:12 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
AkinaОдин раз уже говорил: AkinaЗагрузите ProcessExplorer или иной аналогичный инструмент. Запустите. И смотрите, сколько Экселей запускает этот фрагмент, и что с ними происходит дальше.... Извини, не до того было - срочно нужно было другие эксельки спаривать. Посмотрю на сл. неделе. Из цикла я GetObject вынес. ЗЫ Задача не разовая, нужно будет разобраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 13:06 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
грязный комплектовщикЗадача не разовая, нужно будет разобраться. В таком случае используйте мой совет в режиме трассировки кода. Узнаете много интересного - особенно если найдётся время на эксперименты. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 13:59 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
грязный комплектовщик... Странное дело, обрабатываю 305 файлов, на 306 макрос прекращается, без выдачи ошибки. Запустил по новой - на 57 файле заткнулась работа. В итоге в 3 захода 426 экселек обработалось. Я с такой штукой 1 раз сталкиваюсь. Без всякого сообщения об ошибке макрос просто прекращает работу - и все. Причем потом без проблем запускается. Было дело, грязно использовал АДО с эксельными файлами - но там макрос просто не запускался со временем - Эксель выдавал сообщение "Оут оф мемори". Память утекла как рыба. А вот чтобы так - просто прекратил работу цикл в макросе - 1 раз увидел. Т.е. и такое бывает, сталкивались с таким? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 16:59 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Для For Each? да запросто... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.08.2013, 17:18 |
|
Обработка кучи экселек - есть ли ошибка?
|
|||
---|---|---|---|
#18+
Попробуйте обойтись без FSO (подпапки все равно не просматриваете): Код: vbnet 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2013, 11:37 |
|
|
start [/forum/topic.php?fid=61&msg=38360169&tid=2174615]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 319ms |
total: | 451ms |
0 / 0 |