|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.02.2013, 17:44 | #1 |
Пользователь
Регистрация: 15.10.2009
Сообщений: 15
|
Ошибка при открытии файлов
Доброго дня всем!
есть большой макрос в excel2010 начальная стадия- загрузка и декодирование 10-ти файлов xlsx имена файлов и листов, куда надо данные вставлять занесены в массив каждые файл открывается нижеприведенным кодом функция flopflip просто раскодирует каждую ячейку (иначе "умные" юзеры лезут руками в данные) СУТЬ ПРОБЛЕМЫ - процедура работает- но два раза из трех вылетает ексель подозреваю, что не хватает памяти, НО Я НЕ СПЕЦИАЛИСТ И НЕ ПРОГРАММИСТ -(прошу прощения за быдлокод) уважаемые гуру- подскажите, в чем может быть проблема и как модифицировать/оптимизировать код? зы. файлы разные, размером от 24 кб до 5 мб от 5 до 30 000 строк и от10до 50столбцов - попытался разбить на отрезки по 10000 строк - не помогает Код:
|
11.02.2013, 21:18 | #2 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
1) зачем используются строки ActiveSheet.UsedRange?
2) вместо Код:
Код:
4) если макрос хотя бы один раз отработал корректно, а Excel вылетает «молча», без всяких уведомлений об ошибке, — то это глюк Excel, и с такими глюками справиться весьма непросто 5) постарайтесь избавиться от всех Activate в коде - они не нужны, и могут провоцировать Excel на «вылет» (хотя, конечно, не должны) 6) попробуйте поработать с макросом на другом компе (и, возможно, другой версии Excel) Если все будет работать - проблема в вашем Excel (можно попробовать накатить сервиспак) |
12.02.2013, 10:58 | #3 |
Пользователь
Регистрация: 15.10.2009
Сообщений: 15
|
1. ActiveSheet.UsedRange использую для того, что бы ActiveSheet.UsedRange.Row работал по последней заполненной строке, а то юзеры могут в произвольной пустой строке че-нить сделать - а макрос собьется - но это моя догадка- может я и не прав
2.эсли просветите с пп1 - попробую написать так 4. при ошибке эксель выдыет appcrash и пытается перезапустить приложение 5 попробую обойтись без activate- пока наблюдаю только катастрофический рост потребления памяти экселем при выполнении кода - да 400-500 мб и спорадические вылеты на стадии загрузки этих файлов- дальнейшие преобразования к вылетам не приводят... 6. пробовал на разных компах и системах - результат примерно один и тот же спасибо, что помогаете разобраться |
12.02.2013, 11:42 | #4 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Цитата:
Вообще, это проблема чисто Excel (а не вашего кода), но можно попробовать её избежать. Я бы попробовал один из 2 вариантов: 1) установить другую версию Excel 2010 (c последним сервиспаком) - вот лично у меня Excel 2010 работает очень стабильно, appcrash я даже не помню, когда в последний раз видел (хотя в Excel 2007 - бывало), хотя я ежедневно пишу программы разной сложности, и для больших объёмов памяти в том числе. У меня установлено 2 гига оперативки. А у вас? Может, надо памяти вам добавить в комп? Хотя, массив 30000*50 - это не так уж и много для новой версии Excel 2) оптимизировать функцию flopflip - есть подозрения, что утечка памяти происходит именно в ней Покажите код этой функции - возможно, что после её незначительной переделки все начнет работать стабильно |
|
12.02.2013, 11:44 | #5 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
пример можете скинуть файла с макросом и пару фалов для обработки?
и посмотрите вот эту тему: http://www.programmersforum.ru/showt...60#post1095060 и именно этот пост с открытие файлов: http://www.programmersforum.ru/showp...0&postcount=20
Единственный способ стать умнее, играть с более умным противником...
Последний раз редактировалось EducatedFool; 12.02.2013 в 12:27. Причина: staniiislav, не первый же день на форуме... зачем цитировать огромные сообщения целиком??? |
12.02.2013, 12:00 | #6 |
Пользователь
Регистрация: 15.10.2009
Сообщений: 15
|
Вот код функции и примерчик
но сбоит только на больших файлах Устанавливал и последние сервис паки и гонял на 64разрядах сбоит и на 4 гигах и на 2х Код:
|
12.02.2013, 13:12 | #7 |
Форумчанин
Регистрация: 16.04.2010
Сообщений: 695
|
у меня в вашем файле один лист и немного каких-то символов непонятных
Единственный способ стать умнее, играть с более умным противником...
|
12.02.2013, 13:28 | #8 | |
Пользователь
Регистрация: 15.10.2009
Сообщений: 15
|
Цитата:
увидел ограничение на объем загруженных файлов - поэтому обрезал- а так копипастом его можно увеличить до любого объема сами файлы из-за шифрования не поддаются архивации а макрос уж очень большой - поэтому я и обрезал только сбоящую часть Последний раз редактировалось madace; 12.02.2013 в 13:30. |
|
12.02.2013, 13:39 | #9 |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
Попробуйте такой вариант:
Код:
(данные, конечно, не расшифруются - но причины проблем поможет понять) А вообще, функцию лучше переделать так: Код:
Код:
|
12.02.2013, 13:41 | #10 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
1.Я бы от activate избавлялся примерно так:
Код:
2. ActiveSheet.UsedRange у Вас отрабатывает до открытия книги - т.е. думаю бессмысленно. 3. Открыли книгу и берёте что лежит на активном листе. Уверены, что лист нужный?
webmoney: E265281470651 Z422237915069 R418926282008
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Ошибка при открытии файла | Klim Bassenger | Microsoft Office Excel | 2 | 16.09.2018 15:44 |
eclipse 4.2 – тормоза при открытии файлов | Bustle | Софт | 0 | 24.08.2012 00:58 |
Падает Word при открытии файлов больших объемов 4-5 метров. | Денис Алекс | Microsoft Office Word | 1 | 25.02.2012 10:33 |
ошибка при открытии | Acina | Microsoft Office Access | 1 | 27.07.2011 17:04 |