| 12.02.2010, 17:42 | |
|
Ответы с готовыми решениями:
268
Создать дистрибутив для надстройки Word Excel 2000. Самокопирование надстройки при первом запуске Редактирование надстройки EXCEL |
| 16.08.2026, 16:15 | ||||||||||||||||
|
Решение проблеммы State Loss или Global Variable Reset иначе говоря потери состояния переменных в исполняемой среде VBA (надеюсь правильно написал, но скорее всего нет). Проблемма проявляется, когда, в коде используются инициализируемые данные, хранящиеся в глобавльных или статик-переменных и эти данные внезапно обнуляются в следствие каких-то не предвиденных или предвиденных но не очень желательных сбоев.
Предисловие: заметил интересный момент у Кристиана Буса в его VBA-SafeTimer, где он запускает таймер следующим образом:
Мне пришла мысль, что такую же форму вполне можно использовать для решения выше-описанной пролеммы. При любом сбросе состояния, инициализированный объект формы уничтожается также как и его окно, а по скольку этот момент можно отследить посреством хука окнонной процедуры, то можно в этом моменте решить сразу 2 задачи - 1) освободить любые хэндлы и указатели, если это нужно, 2) запланиовать повторную инициализацию необхоимых данных после сброса (с помощью OneTime или апи-таймера). Пример: Для работы кода нужно создать пустую форму с названием "frmStateKeeper" и на ней добавить фрейм "Frame1". В коде формы можно добавить
Стандартный модуль mdStateKeeper
В модуле в качестве примера инициализированных данных выступает непосредственно объект формы oForm, который я специально сделал Public, чтоб можно было проверять его состояние в Immediate. Этот объект будет автоматичеки инициализирован при любом сбросе состояния если однократно выполнить StartStateKeeper. Чтобы остановить автовосстановление нужно выполнить RemoveHook. Добавлено через 15 минут Так, стоп, недоработка там, не работает решение, если будет ошибка и нажать "End" то крушение всей прилаги. На всякий случай говорю, как г-тся )
1
|
||||||||||||||||
|
ᴁ ©
|
||
| 17.08.2026, 08:08 | ||
|
1. Все глобальные переменные дублирую при присвоении также в спец. таблицу. 2. Каждый раз перед их использованием выполняю процедуру переприсвоения из этой таблицы (например при открытии формы)
1
|
||
| 17.08.2026, 10:23 | ||
|
0
|
||
|
ᴁ ©
|
||
| 17.08.2026, 10:31 | ||
|
0
|
||
| 19.08.2026, 05:22 | |||||||
|
Пример использования.
0
|
|||||||
| 19.08.2026, 09:25 | |||||||
|
Как оказалось, константу надо обхявлять не так &H8001, а вот так &H8001&. Наглядно представить прблему может такой код:
0
|
|||||||
| 19.08.2026, 16:10 | ||||||
|
Добавлю послденее дополнение, дальше все изменения будут (если конечно будут) в репозитории
Если использовать ООП возможности VBA и, что важно, настройку PublicNoCreatable, то вполне можно в одном VBA-проекте использовать экземпляры класса из другого проекта, что позволяет в исходном проекте даже не созавать форму для реализации, того, о чем писалось выше, а инициализировать экземпляр класса из проекта-надстройки и инициализировать форму внутри этого экземпляра класса и т.о. использование детектора State Loss может выглядеть так. Кликните здесь для просмотра всего текста
0
|
||||||
| 21.08.2026, 17:31 | |
|
Еще одна "надстройка года" от меня! Цель надстроки - автоматизировать экспорт vba-модулей в текстовые файлы и импорт их от туда, в целях упрощения гит-версионирования, упорядочивания модулей по папкам, упрощение миграции, или как его там.. в общем это, кога один модуль можно легко распространить на несколько проектов, раскопировав его по нескольким папкам или раскидав на него символьные ссылки. Другой неоспоримый плюс текстовых файлов, что с ними можно работать в текстовых редакторах. Конечно, подобных надстроек в сети, я уверен не мало, но я не хотел проверять, от части, из соображения, что, вроде бы не редко проще написать что-то самому, чем разбираться в чужом (или кажется проще, скорее всего даже так), при том другая причина, в том, что я даже уверен, что наверняка, там не реализована эта идея-фикс с символьными ссылками, которую мне почему-то хочется реализовать.
Принцип работы простой. При сохранении (при срабатывании события сохранения) файла с макросами, надстройка проверяет, существует ли папка в дирректории файла вида "Имя файла.vbaproject" и если существует, то происходит синхронизация состояния всех модулей проекта с папкой проекта. Если что-то изменилось в папке, следует нажать в vba-проекте Ctrl+S, чтоб произошел мерджинг всех изменеий. Много чего конечно и наверняка не доработано. Например спорные ситуации я не прорабатывал, когда файл изменился и там и сям.. Нужно строго соблюдать очередность - где-то что-то изменилось нажимать Ctrl+S. Также строго соблюдать уникальность имен модулей. Дальнейшие изменения будут в репозитории. Там много мусора. В начале я хотел сделать файловый мониторинг изменений в реальном времени, и, в общем, то он уже был готовый, если не учитывать идею с симлинками и джунками, а они уже вносят существенное усложнение, поэтому пока остановился на простой схеме - Ctrl+S.
0
|
|
|
ᴁ ©
|
|
| 09.09.2026, 10:01 | |
|
Поделюсь с коллегами и я своей надстройкой, которую собирал по крохе с просторов и кое-что сам писал. Собрал в нее то, что считал нужным для работы. Некоторые возможности, такие как информация по вагонам и судам или температура воды в Новороссийске скорее всего народу не нужны. Ну так и не пользуйтесь.. Остальное может пригодится. Ставить просто. Снабжена справкой. В меню появляется как "Дополнения". Для начала можете загрузить Help и посмотреть насколько она вам нужна.
0
|
|
| 09.09.2026, 10:01 | |
|
Надстройки AddIns. Кто-нибудь работал с этим? Функция из надстройки приводит к ошибке: ошибка: "Sub or Function not defined"
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|