Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.65/75: Рейтинг темы: голосов - 75, средняя оценка - 4.65
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
1

Как бороться с ошибкой -2147418113?

09.03.2016, 13:16. Показов 13833. Ответов 26
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ошибка возникает время от времени. Файл большой. Рабочая форма содержит много элементов, расположенных на 7 страницах multipage.
Заметил, что ошибка чаще возникает, когда добавлю элемент. но иногда и просто на пустом месте.
В подавляющем большинстве случаев вываливается во время сохранения файла. И всё. Сохранить не удается. ни в целом ни частями. Тогда возвращаюсь к старой версии, вношу изменения по памяти, и, как правило, всё сохраняется. Не прошу решить именно мою проблему. Прошу высказаться, если есть опыт решения сходных проблем в системе:

большой файл + большая форма + много элементов на форме + много кода + долго работает + косяк при сохранении изменений в программе (на форме)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.03.2016, 13:16
Ответы с готовыми решениями:

"Затормаживание" EXCEL. Как бороться?
Добрый день. Вопрос не совсем по VBA, но думаю каждый стьалкивался с подобным. Дело в том что в...

Как бороться с переполнением стека
Мне нужно понять как бороться с переполнением стека. Есть управляющая процедура. изначально она...

Как бороться с утечками памяти в VBA?
Этот вопрос возник в другой теме. Но он важен сам по себе. Я не спец. И много здесь "неспецов". Но...

Outlook как бороться с диалоговым окном
Проблема такая, написал макрос Outlook 2002 - который анализирует входящую почту и отправляет всем...

26
es geht mir gut
11270 / 4752 / 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
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
03.11.2016, 13:39  [ТС] 4
По моим наблюдениям - если изменилось положение/размер элемента на форме - возникает разрушительный сбой. Если добавил/удалил элемент - то же. Остальное работает норм. Работает уже в промышленных масштабах
В чем причина сбоя именно с элементами на форме может быть?
Форма перегружена кончено, но элементы скомпонованы на отдельные сегменты одной большой задачи. Уменьшить не получается. Вот увеличить - пожалуйста))))
0
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
06.11.2016, 12:25 5
Цитата Сообщение от AndreA SN Посмотреть сообщение
изменилось положение/размер элемента на форме - возникает разрушительный сбой
во время работы (выполнения кода) или в дизайнере ?
если во время исполнения кода то как реализованоы изменения положения / размера элемента ?
какие именно элементы вызывают проблемы (имена, родные ли экселя или еще какие подключенные)
те же вопросы про удалил / добавил
предоставьте больше информации
0
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
06.11.2016, 13:23  [ТС] 6
сбой возникает не сразу а спустя секунды -минуту. Возникает после действий, связанных с конструированием формы. до запуска дело просто не доходит. причем после восстановления файла - удается что-то сделать с формой. До следующей редакции живу)))
0
123 / 59 / 14
Регистрация: 29.03.2015
Сообщений: 265
07.11.2016, 16:12 7
Сбой в дизайнере при работе со стандартными элементами управления?
Если да то один из рецептов вам уже писали - пересобрать файл:
Цитата Сообщение от StepInLik Посмотреть сообщение
Экспортируйте все листы, формы, модули и классы.
Создайте новую книгу и ипортируйте в нее все что у вас было.
Плюс найти и установить сборку Office с самыми последними обновлениями
0
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
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
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
11.11.2016, 13:13  [ТС] 10
вот только библиотеки все пришпилены как в старых файлах...
0
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 449
11.11.2016, 15:48 11
Напишите код пересборки файла с одного на другой. Такие траблы часто наблюдались в прошлом десятилетии и старых версиях офиса. Сейчас такое редкость. Кроме вас самих с этой проблемой никто вам помочь не сможет.

Из дополнений и наблюдений о причинах могу сказать, что что-то подобное наблюдается в тех файлах, которые работают на грани памяти компа. Попробуйте увеличить оперативку или попросите себе виртуалку с хорошими ресурсами.

Опишите, что вы сделали/делаете для повышения стабильности файла). По пунктам ...

P.S. А так же укажите как часто и на каком количестве других/разных компьютеров он открывается другими пользователями (по сети или с локального диска), какое количество изменений и как часто производится, часто ли меняются стили, перестраиваются сводные и т.д. ...

Опишите ситуацию целиком. Иначе мы не сможем вам помочь.
0
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
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
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
18.11.2016, 12:39  [ТС] 15
Ребята. И файлик у меня, благодаря более ранним советам бинарный, и наполнение формы уже практически на 98 % автоматизировано.
А вот перенести содержимое листов из одного файла в другой - практически невозможно. И дело даже не в объеме. Сами листы постоянно меняются.

Я просто научился жить с этой ошибкой. Возникает она строго когда меняется расположение/размер элемента на форме, которая
1. создана в 97 версии Excel
2. испытала по меньшей мере 48 модификаций (я версии считаю)
3. содержит пару сотен разных элементов.
4. испытала неоднократные нагрузки на основные элементы в тысячи и десятки тысяч записей

Я не говорю, что моя форма - великий и непогрешимый продукт моцга.
Она давно уже просится в отдельное приложение. Но пока я дорабатываю мелочи концепции - об отдельном приложении речи не идет.

То что xlsm - большая мусорка, я понимаю. Но сделать с этим пока ничего не могу. В файлах хls возникают проблемки с условным форматированием, некоторыми новыми функциями. От условного форматирования я планомерно ухожу. Но работы пока в этом направлении много. Индикация - важная вещь при экспресс-анализе непрерывно добавляющейся инфы.
А вот как уйти от функций СУММЕСЛИ, СЧЁТЕСЛИ и т.п.? Можно, конечно, наваять свою приблуду, но работать она будет заведомо и ощутимо медленнее. Доживу до SQL - буду выпендриваться.

Так что большинство советов я учитываю и использую. Они помогли мне в моем случае локализовать ошибку, условия ее возникновения, действия к ней приводящие, что мной и освещено здесь.

Добавлено через 2 часа 11 минут
Цитата Сообщение от StepInLik Посмотреть сообщение
6. На счет инфы со ссылкой и не лицензионным ПО не понял. Пожалуйста поясните.
Забыл совсем... прошу прощения. Если ПО нелицензионное (офис), то объективно возникает ошибка при подключении модуля, следящего за этим делом. Но у меня ошибка возникает и на лицензионном 2010 офисе (prof+). Так что ко мне это дело не относится. Ссылку здесь я привел, суммируя всё, что я нахожу или к чему прихожу сам по данному вопросу.

Добавлено через 5 минут
Цитата Сообщение от StepInLik Посмотреть сообщение
странно что он у вас вообще работает(и даже открывается) при (по всей видимости) таких объемах и будучи эксэмэльным (xlsx(m)
мои собственные проверки. Файл xlsm (2010-2013) работает и открывается при количестве строк 140 тыс. Файл еще работал, но у меня уже не открылся при количестве строки 730 тыс. Проблема была в нехватке оперативки. так что большой вопрос - а открылся ли файл. С таким монстром работать в excel почти невозможно (недопустимый износ нервов). поэтому дальше я не экспериментировал. Понятно, что мои задачи - задачи баз данных. Я сейчас отрабатываю концептуально программу обработки БД. Формировать БД и приложения, работающие с ней буду позже. И скорее всего с профильными спецами. Моя задача будет - грамотно формировать ТО с учетом ньюансов. Кто-б мне такой подарок в жизни сделал?!

Добавлено через 4 минуты
Цитата Сообщение от StepInLik Посмотреть сообщение
переносите не объекты (со всем мусором), а внешнее состояние объектов - т.е. содержимое, оформление, названия ...
что имелось ввиду? копирование? как перенести форму? перерисовать?
я открываю VBA и драг-энд-дропом перетаскиваю формы, класс, модули из одного файла в другой. листы - копирую стандартным способом "переместить/копировать лист"

Добавлено через 1 минуту
Цитата Сообщение от anton-sf Посмотреть сообщение
с контролем создания и уничтожения объектов
я не уничтожаю и не создаю сами объекты на форме. Они созданы на этапе конструирования, позиционированы и отредактированы. Их наполнение - программное.
При редактировании элементов и возникает сбой.

Добавлено через 45 минут
Цитата Сообщение от AndreA SN Посмотреть сообщение
При редактировании элементов
имеется ввиду не программное наполнение, а редактирование элементов в конструкторе формы
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
Цитата Сообщение от AndreA SN Посмотреть сообщение
Ребята. И файлик у меня
Коллега,

Все ваши объемы и изыскания - не экстремальны в корпоративных средах. Бывает ЗНАЧИТЕЛЬНО хуже! Поверьте.
Все ваши проблемы решаются. Напишите мне pisarev[сабака]live.ru - помогу вам с некоторыми решениями обработки данных. Благо, варианты так же наработаны в таких же условиях.

Что можно сделать на основании вашего последнего сообщения:
- написать автомат, который переберет все ваши объекты на форме и имея всю исходную информацию о них (по свойствам) - сам создаст аналогичную форму и аналогичные объекты на новой форме - со всеми размерами, положением, именами объектов.
- нельзя! ни в коем случае нельзя хранить данные в экселе в строчках в таких объемах! возьмите тот же объем данных в строку и посмотрите сколько он весит и сравните с прибавкой эксельного файла, когда вы раскидываете его на такое количество строк! Храните в небольшом количестве строк, но сжато, а при работе с этими данными раскидывайте их в памяти (пишите, тоже с этим помогу - есть ОЧЕНЬ красивые решения) и работайте с ними оттуда
- причем лучше всего иметь обработчик и отдельно файл с данными. а еще лучше файлы с кусочками данных, которые вы будете открывать и подчитывать по мере необходимости.
- все emf'ки почистили?
- что вам мешает сложить это все в аксесс и вести обработку тем же аксессным SQL? можно поставить MySQL(или ругие аналоги) - почитайте.

P.S. нагромождение формы (им. в виду ОГРОМНОЕ количество элементов) в моем опыте никогда не вызывало и не вело к эксептам и проблемам
P.S. пишите - уверен, все если не просто, то не сложно!
1
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
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
Цитата Сообщение от AndreA SN Посмотреть сообщение
предложение помощи
Поверьте, бывали истории и пострашнее. За отсутствием оного, как VBA - приходилось решать и их. Набирайтесь опыта, пишите - помогу.
Подключать никого не нужно - дам вам пару библиотек и опишу не типичные для VBA методы решения ... поменяю ваше представление в голове о способах и подходах и вы сами все сделаете.
1
1018 / 122 / 2
Регистрация: 26.08.2011
Сообщений: 1,155
Записей в блоге: 2
21.12.2016, 08:14  [ТС] 20
а еще может быть вирус в контейнере. Тоже такая фигня вылезает
0
21.12.2016, 08:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2016, 08:14
Помогаю со студенческими работами здесь

Как бороться с ошибкой в Setup.exe?
При установки игры вылетает ошибка Setup.exe и эта опухать мешает кровяной жидкости доползти до...

AVR asm - как нормально бороться с ошибкой
Studyo 4.19, с ассемблером ещё нормально работает, да вот не всегда (пиканье опускаю). При...

Как бороться с этой ошибкой и что она значит?
Error Type: error '8002801d' Library not registered. /iisHelp/common/500-100.asp, line 123

Как Бороться С Ошибкой Field Is Too Large (32k) Or View’s Colum
Добрый день! Есть база, критичная и большая. В ней документы с большим количеством респонсов,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru