Страницы: 1
RSS
Моя надстройка рушит Excel, Помогите решить проблему
 
Добрый день!

Делаю надстройку для Excel и внезапно обнаружилось, что наколдовано в ней слишком сильно.
Хочу найти причину внезапного вылета Excel.
Уверен что что-то делаю не так, но не могу найти что именно.
Помогите пожалуйста!

Воспроизведение глюка:

Содержимое приложенного архива необходимо расположить на диске: "D:\СПКС\"
Можно изменить расположение подправив пару адресов в ini файле расположенном в папке с надстройкой

Последовательность действий приводящих к падению Excel:
1. Запускаем надстройку
2. На вкладке Спецификация ПЭО жмём "Открыть" - открываем файл "D:\СПКС\02_СПЕЦИФИКАЦИЯ_ОП\XLSX_SPEC\Падающий.xlsx"
3. На вкладке Спецификация ПЭО жмём "Обновить всё"
4. Выбираем строку № 6
5. На вкладке Спецификация ПЭО жмём "Внести" -> в поле "Цена" вводим: 11,11 и жмём Enter
После отработки функций в течении 3-4 секунд Excel аварийно закрывается ничего не говоря. Иногда перезапускаясь открывает "восстановленные" файлы
Если эффект не наступил, повторить операции 4 и 5 для строк 7, 8...

Если пропустить пункт 3 - вылет также произойдёт, но позже.

Кнопка "Открыть" вызывает: Sub OpenPEOfileClick
Кнопка "Обновить всё" вызывает: Sub RefreshAllClick
Кнопка "Ввести" вызывает: Sub InputPriceClick


На всех Excel до которых смог добраться проверил - всюду глюк воспроизводится:
  Microsoft Excel 2016 (16.0.5478.1002) MSO (16.0.5478.1000), 64 - разрядная версия
  Microsoft Excel 2016 (16.0.4266.1001), 64 - разрядная версия
  MS Excel LTSC MSO (16.0.14332.20824), 64 - разрядная версия

Пробовал экспортировать код модулей и форм, пересоздавать файл надстройки, увы, результата не добился.
 
Цитата
Махмуд написал:
5. На вкладке Спецификация ПЭО жмём "Внести" -> в поле "Цена" вводим: 11,11 и жмём Enter
Может как автор вы прямо скажете что запускается в этот момент, чтоб посмотреть код , а не проделывать все действия?
По вопросам из тем форума, личку не читаю.
 
2010 32 Глюк не воспроизводится.
 
Цитата
написал:
Может как автор вы прямо скажете что запускается в этот момент, чтоб посмотреть код , а не проделывать все действия?
В первом приближении наверное происходящее можно описать примерно так:

На "Обновить всё" происходит проверка данных в каждой строке с данными:
1. Если не открыт, то открывается только для чтения файл СПКС_БДО.xlsx (таблица с наименованиями оборудования, далее БДО)
2. Если не открыт, то открывается только для чтения файл СПКС_БДЦ.xlsx (таблица с ценами, далее БДЦ)
(если БДО или БДЦ открыты, но запомненная дата их последнего изменения при предыдущем обращении не совпадает с текущей датой записи файла, то файлы закрываются и открываются по новой)
3. Содержимое ячеек листа "Номенклатура" из файла "Падающий.xlsx" (далее "номенклатура") в столбцах от B до F по коду из столбца A сверяется с данными листа "База" из файла "БДО"
4. Содержимое ячеек "номенклатуры" в столбцах от G до J по коду из столбца A сверяется с данными листа "База" из файла "БДО"
Данные которые в "падающем" отличны от данных хранящихся в БДО и БДЦ подсвечиваются цветом и дополняются соответствующим комментарием.
5. Комментарием к ячейке цены каждой строки вводятся данные о последних трёх ценах (с реквизитами - датой, номером и поставщиком коммерческого предложения)

На "Внести" производится ввод данных в "номенклатуру", а затем запускается "Обновить всё":
1. В ячейки текущей выбранной строки вносятся "номенклатуры" вписываются данные из формы
2. Запускается "Обновить всё"
 
Цитата
написал:
2010 32 Глюк не воспроизводится.
Спасибо большое!
 
Цитата
Махмуд написал:
В первом приближении наверное происходящее можно описать примерно так:
в первом приближении нужно просто указать модуль и процедуру которая начинает обработку этого.

Но если
Цитата
doober написал:
2010 32 Глюк не воспроизводится.
то возможно проблема в приложении, или операционной системе, ведь библиотеки общие.....
По вопросам из тем форума, личку не читаю.
 
Цитата
написал:
в первом приближении нужно просто указать модуль и процедуру которая начинает обработку этого.
Процедура "Обновить всё" запускается из модуля MF_SQIS_Ribbon_Exec_2_PEO, называется RefreshAllClick
Процедура "Ввести"  запускается из модуля MF_SQIS_Ribbon_Exec_2_PEO, называется InputPriceClick


Цитата
написал:
возможно проблема в приложении, или операционной системе, ведь библиотеки общие.....
Проблема воспроизводится на 4х компьютерах, все на windows 10 и home и pro с последними обновлениями, опробованы версии Excel:
1. Microsoft Excel 2016 (16.0.5478.1002) MSO (16.0.5478.1000), 64 - разрядная версия,
2. Microsoft Excel 2016 (16.0.4266.1001), 64 - разрядная версия,
3. MS Excel LTSC MSO (16.0.14332.20824), 64 - разрядная версия

PS: что-то с цитированием как-то неудобно выходит, пропадает ссылка на цитируемого :(
Изменено: Махмуд - 15.01.2025 11:38:53 (PS)
 
Цитата
написал:
2010 32 Глюк не воспроизводится.
Похоже я нашёл в чём проблема.

При активации формы фокус передаётся на поле в котором можно ввести цену и при этом вызывается дропдаун для одного из comboBox.
При этом после ввода цифры и нажатия на ENTER список comboBox не закрывается и запускается "unload" формы, с открытым выпадающим списком.
Из-за этого после закрытия формы, через несколько секунд и происходит падение excel.

Я дико извиняюсь, но не могли бы вы подтвердить, что при проверке у вас тоже открывается тот самый нижний правый comboBox с "вариантами реквизитов..."?
Просто если нажать на кнопку "Ввести в документ" кликом мыши - то comboBox закроется и проблем не будет, но если нажать после ввода цены Enter - Excel упадёт.
 
Да, открывается.Но только реакция одинаковая, что кнопку нажать, что ENTER, падения не происходит.
Пускай кто нибудь проверит с 64 разрядным офисом
Изменено: doober - 17.01.2025 00:25:27
 
Цитата
написал:
Пускай кто нибудь проверит с 64 разрядным офисом
Так вот собственно я на х64 и проверил, на нескольких разных машинах с разными офисами - 2016, 2019, 2021 - падает. А у Вас, на х32 похоже не падает :)
Спасибо большое, за помощь.
Пожалуй тема исчерпана.
Страницы: 1
Наверх