Есть макрос для Word VBA, который использует диалоговое окно с элементом Richtx32.ocx (текстовое окно с возможностью выделения жирным и прочими примочками).
При установке макроса, из командной строки делается регистрация этого ocx, то есть:
regsvr32 /s C:\Pupkin\Richtx32.ocx
(перенос файла в c:\windows\system32 ничего не дал... или это критично?)
Всё работает исправно до тех пор, пока не происходит автообновление операционки службой Windows Update. После её работы, Word выдаёт сообщение, что библиотека не зарегистрирована. А потом при запуске макроса пишется, что элемент не найден и в отладке высвечивается название того самого элемента - текстового окна. При этом, сам элемент на месте - виден в VBA-конструкторе. Требуется выйти из ворда и дополнительно перерегистрировать Richtx32.ocx , после чего всё снова работает до следующего автообновления.
Недавно в макрос, запускаемый при старте Word я забил строку:
- Код: Выделить всё
RetVal = Shell("regsvr32 /s C:\Pupkin\Richtx32.ocx", 1)
стало лучше, но не намного...
Благодаря ей сообщения об ошибках не исчезают, но хоть не надо лезть в командную строку, а достаточно просто перезапустить ворд. То есть, регистрация видимо проходит, но при первом запуске компонента Richtx32 ещё не зарегистрирована и выдаётся ошибка? Потом элемент видимо регистрируется, но изменения не подхватываются на лету.
Что любопытно: если вручную снести Richtx32.ocx командой
regsvr32 /u C:\Pupkin\Richtx32.ocx
то элемент из диалогового окна исчезает полностью! И его приходится руками восстанавливать или устанавливать весь пакет с макросами заново, чтобы не гемороиться. То есть
либо автообновление виндов сносит компоненту не полностью,
либо строка
- Код: Выделить всё
RetVal = Shell("regsvr32 /s C:\Pupkin\Richtx32.ocx", 1)
хоть и отрабатывает, но не доводит дело до конца,
либо эта строка останавливает вордовское удаление элемента (из-за того, что Richtx32.ocx не найдена).
Собственно вопросы:
1) правильно ли я вообще регистрирую Richtx32.ocx????
2) как делать регистрацию ocx при запуске ворда, но не через встроенный вордовый макрос автозапуска, а до того, как ворду встретятся данные о незарегистрированном элементе управления?
3) как загрузить окно со всеми встроенными в него макросами из отдельного файла? может тогда регистрация через вордовский авторан сработает, поскольку в файле dot не будет этого элемента?
4) какие ещё есть способы эту напасть обойти?
Уф-фф... извините за многословность, но короче не выходит...