powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / OLE из С++
22 сообщений из 22, страница 1 из 1
OLE из С++
    #39949322
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Многие годы я готовил выходные документы через EXCEL и WORD. Данные - из БД.
Что-то случилось с моим офисом и теперь я получаю:
...
Рейтинг: 0 / 0
OLE из С++
    #39949326
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переустановка офиса не помогает.
Может, у кого-нибудь есть соображения на этот счет?
Очень не хочется переустанавливать операционку.
...
Рейтинг: 0 / 0
OLE из С++
    #39949422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где исходный код?
...
Рейтинг: 0 / 0
OLE из С++
    #39949933
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07,

регистрация объектов автоматизации офиса не прошла

скопировать с реестра рабочей машинки, где такой же офис стоит и добавить в свой
...
Рейтинг: 0 / 0
OLE из С++
    #39949999
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)

регистрация объектов автоматизации офиса не прошла
скопировать с реестра рабочей машинки, где такой же офис стоит и добавить в свой

Только программист* мог дать такой точный и бесполезный ответ ( C )

* в других версиях анекдота - математик
...
Рейтинг: 0 / 0
OLE из С++
    #39950001
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен что копирование реестра здесь будет решением. Если какие-то компоненты
не прорегистрировались во время инсталляции офиса - значит на то были причины и надо их
смотреть. Иначе реестр будет фейком по отношению к реальному положению дел.
...
Рейтинг: 0 / 0
OLE из С++
    #39950003
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кроме того, остается 50% вероятности, что дело не в офисе, а в прикладной программе

почему 50% ? все просто:

-Какая вероятность встретить динозавра на улице
-1/2 Или встретишь или нет
...
Рейтинг: 0 / 0
OLE из С++
    #39950140
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве regsvr не для этого предназначен?
Сорри если тупой вопрос, COM трогал лет 13 назад последний раз...
...
Рейтинг: 0 / 0
OLE из С++
    #39950142
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разумеется. А что любой бинарник можно подложить под regsvr32 ?
...
Рейтинг: 0 / 0
OLE из С++
    #39950175
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NekZ
Разве regsvr не для этого предназначен?
Сорри если тупой вопрос, COM трогал лет 13 назад последний раз...
врят ли получится, у многих релоки срезаны в экзешнике
обычно COM-сервера в виде exe регистрируются если запустить их с параметром -register под админом

но копии с реестра аналогичной конфигурации достаточно
...
Рейтинг: 0 / 0
OLE из С++
    #39950204
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
но копии с реестра аналогичной конфигурации достаточно

"Огласите весь список" ( C )

Можете написать все ветки реестра которые нужно копировать?
...
Рейтинг: 0 / 0
OLE из С++
    #39950240
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

довольно очевидно что
Код: plaintext
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Application
...
Рейтинг: 0 / 0
OLE из С++
    #39950305
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перед переустановкой Office не только удалял прежнюю версию,
но и все упоминания его в каталогах и реестре.
Не помогает.
...
Рейтинг: 0 / 0
OLE из С++
    #39950306
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что касается исходного кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
EXCEL_APP::EXCEL_APP(){
Variant Books;
Variant Sheets;
int i;

App=Variant::CreateObject("Excel.Application"); // вот тут
...............................
...
Рейтинг: 0 / 0
OLE из С++
    #39950308
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват именно установщик, а я даже и не знаю кто это такой
...
Рейтинг: 0 / 0
OLE из С++
    #39950311
muk07
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, на той же машине под XP всё работает
...
Рейтинг: 0 / 0
OLE из С++
    #39950337
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07
Кстати, на той же машине под XP всё работает

Ты сейчас запутаешь всех окончательно. У тебя есть "та" машина и "эта".

Приведи их версии. В меню Пуск -> winver.
...
Рейтинг: 0 / 0
OLE из С++
    #39950522
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
Leonid Kudryavtsev,

довольно очевидно что
Код: plaintext
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Excel.Application


no comment
...
Рейтинг: 0 / 0
OLE из С++
    #39950712
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

давай может ты ванговать не будешь над чужими ответами, дождёмся ответа сабжера, и дальше по ситуации
а то он даже ветку реестра посмотреть не может

PS: и да, любой именной объект прописывается именно так, либо в манифесте если портабельное приложение
...
Рейтинг: 0 / 0
OLE из С++
    #39950813
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
muk07 ,

На старых Windows OLE Automation мог переставать работать из-за русского имени компьютера. Проверьте какое имя у компьютера, рабочей группы и пользователя (должно быть видно в Control Panel - System ) Если по русски - попытайся поменять на короткое (макс 8 букв) имя только английскими буквами (без каких либо символов). Сталкивался с таким в 1999-2000

kealon(Ruslan),

Зачем ванговать:
1)
Насколько я помню, Excel.Application всего лишь синоним для полного названия класса, который по нормальному называется как Excel.Application.8 Excel.Application.10 Excel.Application.22 etc

2)
OLE объекты вообще-то идентифицируются по CLSID, и информация по ним в регистре так же ищется по CLSID
А ProgId это всего лишь еще один синоним/алиас для CLSID. Т.ч. указанная Вами ветка реестра, содержит всего лишь ссылку на соответствующий CLSID и внезапно (!) без регистрации CLSID полностью бессмысленна
https://docs.microsoft.com/ru-ru/windows/win32/com/-progid--key

3)
AFAIK Объекты VBA внезапно на Excel.Application не заканчиваются. Там их десятки, если не сотни. Достаточно в Help посмотреть.

etc...

Достаточно было хотя бы самому в ветку Excel.Application заглянуть Всего два параметра CLSID и CurVer - как-то "бедновато"
...
Рейтинг: 0 / 0
OLE из С++
    #39951201
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev

1)
Насколько я помню, Excel.Application всего лишь синоним для полного названия класса, который по нормальному называется как Excel.Application.8 Excel.Application.10 Excel.Application.22 etc

записей в реестре можно наплодить очень много
Leonid Kudryavtsev
2)
OLE объекты вообще-то идентифицируются по CLSID, и информация по ним в регистре так же ищется по CLSID
А ProgId это всего лишь еще один синоним/алиас для CLSID. Т.ч. указанная Вами ветка реестра, содержит всего лишь ссылку на соответствующий CLSID и внезапно (!) без регистрации CLSID полностью бессмысленна
https://docs.microsoft.com/ru-ru/windows/win32/com/-progid--key
"слышал звон..."
как мы видим автор ищет по ProgID, что бы предоставить доступ к прошлым версиям компонентов регистрируют такие имена (микрософт как видим добавляет номер версии). API заморачиваться и выяснять "а есть ли версии" не будет, а просто выдаст ошибку что запрашиваемый ProgID не найден
Leonid Kudryavtsev

3)
AFAIK Объекты VBA внезапно на Excel.Application не заканчиваются. Там их десятки, если не сотни. Достаточно в Help посмотреть.

etc...

Достаточно было хотя бы самому в ветку Excel.Application заглянуть Всего два параметра CLSID и CurVer - как-то "бедновато"
Автору 1 конкретный объект нужен. Он пока и эти два параметра сравнить и проверить не может, не надо ставить тележку впереди лошади. Тут надо начинать с "розетка включена?".
Проверит ProgID, будем дальше CLSID проверять
где-то у меня была в закладках ссылка на статью в MSDN о полном порядке загрузки используемом в GetActiveObject, но вот найти что-то не могу
...
Рейтинг: 0 / 0
OLE из С++
    #39961489
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понимаю, что топик старый, но просто если вдруг еще актуально :)

полезная ссылка


пункты 1) и 2) можно поменять местами. Чтобы проверить ДО начала манипуляций

1) регистрируем COM-сервер
Код: plaintext
1.
EXCEL.EXE –REGSERVER



2) затем стартуем DCOMCNFG в 32-битном режиме

Код: plaintext
1.
DCOMCNFG -32



и смотрим здесь

Код: plaintext
1.
Component Services \ My Computer \ DCOM Config \ Microsoft Excel Application
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / OLE из С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]