1 | |
Как бороться с ошибкой -2147418113?09.03.2016, 13:16. Показов 14459. Ответов 26
Метки нет (Все метки)
Ошибка возникает время от времени. Файл большой. Рабочая форма содержит много элементов, расположенных на 7 страницах multipage.
Заметил, что ошибка чаще возникает, когда добавлю элемент. но иногда и просто на пустом месте. В подавляющем большинстве случаев вываливается во время сохранения файла. И всё. Сохранить не удается. ни в целом ни частями. Тогда возвращаюсь к старой версии, вношу изменения по памяти, и, как правило, всё сохраняется. Не прошу решить именно мою проблему. Прошу высказаться, если есть опыт решения сходных проблем в системе: большой файл + большая форма + много элементов на форме + много кода + долго работает + косяк при сохранении изменений в программе (на форме)
0
|
09.03.2016, 13:16 | |
Ответы с готовыми решениями:
26
"Затормаживание" EXCEL. Как бороться? Как бороться с переполнением стека Как бороться с утечками памяти в VBA? Outlook как бороться с диалоговым окном |
es geht mir gut
11271 / 4753 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
09.03.2016, 13:22 | 2 |
Ну что тут сказать?
Уменьшить файл - уменьшить форму - уменьшить количество элементов на форме - уменьшить код - будет быстрее работать - исчезнет косяк при сохранении изменений в программе (на форме)
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
09.03.2016, 15:47 | 3 |
Разделите ваши вопросы на части.
Если косяк при сохранении - он решаем. Попробуйте: 1. Наберитесь терпения и выделите время на эту работу. Экспортируйте все листы, формы, модули и классы. Создайте новую книгу и ипортируйте в нее все что у вас было. 2. Попробуйте сохранить в формате 97-2003 Excel Верните в ваш формат обратно. 3. Почистите временные emf-файлы ваших компонентов (почитайте первый пост Профессиональные проблемы, решения, рекомендации и ошибки). 4. Почитайте информацию, как уменьшить размер файла экселя - на просторах интернета этого много ... Если медленно работает код - то это ТОЛЬКО ВАШ косяк. Существует "миллион и один способ" ускорить работу почти любого кода в экселе (в интернете тоже много подобной инфрмации). ... как показывает опыт - количество диалогов и структура объектов(в т.ч. вложения) на форме не влияют на глючность файла. Добавлено через 1 час 2 минуты Так же, на будущее - есть мое личное (по опыту), но не претендующее на истину мнение, что лучше всего хранить книги в бинарной форме. IMHO (опять же по моему личному опыту) если падает xml - чаще всего падает конкретно, если падает бинарник - вероятность восстановить его гораздо выше ... Кроме того, все то, что падает в xml из-за объема, зачастую в бинарном и открывается и работает и закрывается стабильнее. Размышления почему так - предлагаю оставить за скобками.
1
|
03.11.2016, 13:39 [ТС] | 4 |
По моим наблюдениям - если изменилось положение/размер элемента на форме - возникает разрушительный сбой. Если добавил/удалил элемент - то же. Остальное работает норм. Работает уже в промышленных масштабах
В чем причина сбоя именно с элементами на форме может быть? Форма перегружена кончено, но элементы скомпонованы на отдельные сегменты одной большой задачи. Уменьшить не получается. Вот увеличить - пожалуйста))))
0
|
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
|
|
06.11.2016, 12:25 | 5 |
во время работы (выполнения кода) или в дизайнере ?
если во время исполнения кода то как реализованоы изменения положения / размера элемента ? какие именно элементы вызывают проблемы (имена, родные ли экселя или еще какие подключенные) те же вопросы про удалил / добавил предоставьте больше информации
0
|
06.11.2016, 13:23 [ТС] | 6 |
сбой возникает не сразу а спустя секунды -минуту. Возникает после действий, связанных с конструированием формы. до запуска дело просто не доходит. причем после восстановления файла - удается что-то сделать с формой. До следующей редакции живу)))
0
|
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
|
|
07.11.2016, 16:12 | 7 |
Сбой в дизайнере при работе со стандартными элементами управления?
Если да то один из рецептов вам уже писали - пересобрать файл: Плюс найти и установить сборку Office с самыми последними обновлениями
0
|
11.11.2016, 09:02 [ТС] | 8 |
этим пользуюсь время от времени.
Но вот сейчас к примеру после такой сборки возникла ошибка с библиотеками. пишет - не может найти библиотеку, которая работает с Chr и переменными... Это в 10 офисе. в 13 офисе - всё работает.
0
|
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
|
|
11.11.2016, 09:58 | 9 |
Бывало и у меня отваливались библиотеки, поправлял в References
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
11.11.2016, 15:48 | 11 |
Напишите код пересборки файла с одного на другой. Такие траблы часто наблюдались в прошлом десятилетии и старых версиях офиса. Сейчас такое редкость. Кроме вас самих с этой проблемой никто вам помочь не сможет.
Из дополнений и наблюдений о причинах могу сказать, что что-то подобное наблюдается в тех файлах, которые работают на грани памяти компа. Попробуйте увеличить оперативку или попросите себе виртуалку с хорошими ресурсами. Опишите, что вы сделали/делаете для повышения стабильности файла). По пунктам ... P.S. А так же укажите как часто и на каком количестве других/разных компьютеров он открывается другими пользователями (по сети или с локального диска), какое количество изменений и как часто производится, часто ли меняются стили, перестраиваются сводные и т.д. ... Опишите ситуацию целиком. Иначе мы не сможем вам помочь.
0
|
12.11.2016, 14:55 [ТС] | 12 |
по поводу памяти - это актуально
Для пересборки файла просто скопировал в новый файл все листы, в VBA переместил все модули, формы и класс Потом сохранил в xlsm потом добавил библиотеку и всё вроде Добавлено через 1 минуту самое интересное, что в 2013 Excel прога работает, а в 2010 - просит подключить библиотеку и ругается на chr и все переменные в 2013 - работает в течение одного сеанса после манипуляций с библиотеками далее выкобенивается, пока я снова в библиотеки не залезу Добавлено через 20 часов 42 минуты Интересная инфа здесь https://www.google.ru/webhp?so... 1%8B%20bex особенно это касается нелицензионного ПО еще - заработала прога, когда я переподключил (то есть отключил и включил заново) библиотеки
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
14.11.2016, 09:11 | 13 |
Вы не следуете ранее указанным советам.
1. Попробуйте сохраниться в гораздо более раннем формате офиса - xls. Он не хранит кучи "мусора", как это делают современные форматы. 2. Храните файл ТОЛЬКО в бинарном виде! Это одна из ЯВНЫХ причин всех ваших проблем. По другому - странно что он у вас вообще работает(и даже открывается) при (по всей видимости) таких объемах и будучи эксэмэльным (xlsx(m) = XML в ZIP'е). 3. Лист - это объект(класс) документа не только актуальных данных, но и всей истории и кучи "хлама", которая мешает работать вашему коду при работе с листом. Если вы переносите одну книгу в другую - переносите не объекты (со всем мусором), а внешнее состояние объектов - т.е. содержимое, оформление, названия ... Это тоже одна из причин, по которой можно сказать - странно, что вы ожидали после такого, что у вас как-то что-то должно начать работать по другому. Перерисовывайте листы руками, переносите через буфер обмена отдельной вставкой значений, формата и примечаний (или напишите код, который будет переносить ячейку за ячейкой каждый лист). Объекты ActiveX можно переносить через буфер обмена (как показала практика, проблемы таких объектов при переносе таким способом - не остаются) 4. Имея проблемы с памятью вы должны стараться хранить всю информацию в одной рабочей книге. Пробуйте что-то распределить по другим файлам/книгам. (+ проверьте, что динамическая память у вас не статична, а динамична - это тоже может быть одна из причин ваших проблем) 5. 2010 и 2013 офисы одной локализации? 6. На счет инфы со ссылкой и не лицензионным ПО не понял. Пожалуйста поясните. Как вы думаете, вы написали в вашем файле вместо слова "мама" слово "папа" или переименовали лист с имени "лист 1" на "супер лист" - и все ваши названия поменялись и в файле ничего лишнего о ваших наименованиях или прежнем тексте не хранится?! Не будьте так уверены. Не верьте своим предположениям и надеждам. Не верьте Экселю, не верьте никогда! Старайтесь думать, что в нем не все гладко и стараться работать чисто самому. Там куча всякой ерунды, которую он таскает в файле с самого его зарождения. Вы можете менять имя объекта 8 раз - и все 8 имен будут продолжать храниться ...
0
|
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
|
|
14.11.2016, 09:50 | 14 |
Точно, StepInLik дело говорит.
Еще нюанс - перестроив наполнение форм с ручной на программную, с контролем создания и уничтожения объектов, я от таких проблем давно избавился.
0
|
18.11.2016, 12:39 [ТС] | 15 |
Ребята. И файлик у меня, благодаря более ранним советам бинарный, и наполнение формы уже практически на 98 % автоматизировано.
А вот перенести содержимое листов из одного файла в другой - практически невозможно. И дело даже не в объеме. Сами листы постоянно меняются. Я просто научился жить с этой ошибкой. Возникает она строго когда меняется расположение/размер элемента на форме, которая 1. создана в 97 версии Excel 2. испытала по меньшей мере 48 модификаций (я версии считаю) 3. содержит пару сотен разных элементов. 4. испытала неоднократные нагрузки на основные элементы в тысячи и десятки тысяч записей Я не говорю, что моя форма - великий и непогрешимый продукт моцга. Она давно уже просится в отдельное приложение. Но пока я дорабатываю мелочи концепции - об отдельном приложении речи не идет. То что xlsm - большая мусорка, я понимаю. Но сделать с этим пока ничего не могу. В файлах хls возникают проблемки с условным форматированием, некоторыми новыми функциями. От условного форматирования я планомерно ухожу. Но работы пока в этом направлении много. Индикация - важная вещь при экспресс-анализе непрерывно добавляющейся инфы. А вот как уйти от функций СУММЕСЛИ, СЧЁТЕСЛИ и т.п.? Можно, конечно, наваять свою приблуду, но работать она будет заведомо и ощутимо медленнее. Доживу до SQL - буду выпендриваться. Так что большинство советов я учитываю и использую. Они помогли мне в моем случае локализовать ошибку, условия ее возникновения, действия к ней приводящие, что мной и освещено здесь. Добавлено через 2 часа 11 минут Забыл совсем... прошу прощения. Если ПО нелицензионное (офис), то объективно возникает ошибка при подключении модуля, следящего за этим делом. Но у меня ошибка возникает и на лицензионном 2010 офисе (prof+). Так что ко мне это дело не относится. Ссылку здесь я привел, суммируя всё, что я нахожу или к чему прихожу сам по данному вопросу. Добавлено через 5 минут мои собственные проверки. Файл xlsm (2010-2013) работает и открывается при количестве строк 140 тыс. Файл еще работал, но у меня уже не открылся при количестве строки 730 тыс. Проблема была в нехватке оперативки. так что большой вопрос - а открылся ли файл. С таким монстром работать в excel почти невозможно (недопустимый износ нервов). поэтому дальше я не экспериментировал. Понятно, что мои задачи - задачи баз данных. Я сейчас отрабатываю концептуально программу обработки БД. Формировать БД и приложения, работающие с ней буду позже. И скорее всего с профильными спецами. Моя задача будет - грамотно формировать ТО с учетом ньюансов. Кто-б мне такой подарок в жизни сделал?! Добавлено через 4 минуты что имелось ввиду? копирование? как перенести форму? перерисовать? я открываю VBA и драг-энд-дропом перетаскиваю формы, класс, модули из одного файла в другой. листы - копирую стандартным способом "переместить/копировать лист" Добавлено через 1 минуту я не уничтожаю и не создаю сами объекты на форме. Они созданы на этапе конструирования, позиционированы и отредактированы. Их наполнение - программное. При редактировании элементов и возникает сбой. Добавлено через 45 минут имеется ввиду не программное наполнение, а редактирование элементов в конструкторе формы
0
|
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
|
|
25.11.2016, 17:03 | 16 |
AndreA SN, я писал что ушел от конструирования форм в дизайнере, соответственно и от хранения в файле всей этой важной но типизируемой информации.
Еще я давно не нагромождаю в одну форму всё и сразу. На каждое дело - своя форма. И всё это я сделал из-за подобных проблем, из-за сложности с отладкой в том числе. Вам бы не помешало пройти этот путь )) А еще, после краха Excel вы смотрели что в журнале приложений Windows пишется ?
1
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
09.12.2016, 22:38 | 17 |
Коллега,
Все ваши объемы и изыскания - не экстремальны в корпоративных средах. Бывает ЗНАЧИТЕЛЬНО хуже! Поверьте. Все ваши проблемы решаются. Напишите мне pisarev[сабака]live.ru - помогу вам с некоторыми решениями обработки данных. Благо, варианты так же наработаны в таких же условиях. Что можно сделать на основании вашего последнего сообщения: - написать автомат, который переберет все ваши объекты на форме и имея всю исходную информацию о них (по свойствам) - сам создаст аналогичную форму и аналогичные объекты на новой форме - со всеми размерами, положением, именами объектов. - нельзя! ни в коем случае нельзя хранить данные в экселе в строчках в таких объемах! возьмите тот же объем данных в строку и посмотрите сколько он весит и сравните с прибавкой эксельного файла, когда вы раскидываете его на такое количество строк! Храните в небольшом количестве строк, но сжато, а при работе с этими данными раскидывайте их в памяти (пишите, тоже с этим помогу - есть ОЧЕНЬ красивые решения) и работайте с ними оттуда - причем лучше всего иметь обработчик и отдельно файл с данными. а еще лучше файлы с кусочками данных, которые вы будете открывать и подчитывать по мере необходимости. - все emf'ки почистили? - что вам мешает сложить это все в аксесс и вести обработку тем же аксессным SQL? можно поставить MySQL(или ругие аналоги) - почитайте. P.S. нагромождение формы (им. в виду ОГРОМНОЕ количество элементов) в моем опыте никогда не вызывало и не вело к эксептам и проблемам P.S. пишите - уверен, все если не просто, то не сложно!
1
|
09.12.2016, 23:35 [ТС] | 18 |
anton-sf, спасибо за совет. Этот путь я уже прошел. Кстати, полностью с Вашим мнением согласен. Действительно, не преумножай без необходимости. Но в моем конкретном случае, как мне уже ясно, речь идет не об одной маленькой задачке обработки данных, а о целом семействе задач, применимых к одной БД. Какая метода мне понадобится в каждый последующий момент - я не могу сказать. Поэтому инструментарий хранится на одной форме на разных вкладках. Сейчас двигаюсь в сторону оптимизации и упрощения инструментов.
StepInLik, очень благодарен за предложение к сотрудничеству. Скажу честно - пока просто нет времени задействовать кого-то еще кроме себя самого. Сейчас описываю концепцию, для которой и создавал программку. Ее практическая реализация - уже точно не в VBA - будет лишь после защиты дисера. А с дисером работы - не в проворот. да еще и добавляется постоянно. Например - сегодня получил письмо из редакции - проверьте, мол статью. Слава Богу - проверил. Ну как могжно относиться к редактору, который сократил 12-значные идентификационные номера до чисел с правающей запятой?!... Вообщем полдня выверял цепочки цифр. Восемь страниц академической публикации!!! Текст, который надоел, навяз в зубах и т.д. В условиях этих нервотрепок толково поставить техзадание я сейчас не в состоянии. Но я всё равно благодарен за предложение помощи. В итоге всё, конечно, будет реализовано в мусиквеле.
0
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
|
|
10.12.2016, 00:29 | 19 |
Поверьте, бывали истории и пострашнее. За отсутствием оного, как VBA - приходилось решать и их. Набирайтесь опыта, пишите - помогу.
Подключать никого не нужно - дам вам пару библиотек и опишу не типичные для VBA методы решения ... поменяю ваше представление в голове о способах и подходах и вы сами все сделаете.
1
|
21.12.2016, 08:14 [ТС] | 20 |
а еще может быть вирус в контейнере. Тоже такая фигня вылезает
0
|
21.12.2016, 08:14 | |
21.12.2016, 08:14 | |
Помогаю со студенческими работами здесь
20
Как бороться с ошибкой в Setup.exe? AVR asm - как нормально бороться с ошибкой Как бороться с этой ошибкой и что она значит? Как Бороться С Ошибкой Field Is Too Large (32k) Or View’s Colum Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |