Страницы: 1
RSS
Включение COM надстройки
 
Добрый день.
Подскажите, пожалуйста.

Есть VBS скрипт с таким содержимым:
Код
Dim xlApp, xlWb, xlWs
Set xlApp = CreateObject("Excel.Application")
Set xlWb = xlApp.Workbooks.Add: Set xlWs = xlWb.Worksheets(1)
xlApp.Visible = TRUE
Set xlWs = Nothing: Set xlWb = Nothing: Set xlApp = Nothing

Excel успешно открывается, книга создается.
Но никак не могу решить одну проблему.

У меня в excel есть подключенные XLAM и COM надстройки. При открытии excel скриптом выше, надстройки не подключаются. При этом в самом excel (Параметры Excel -> Надстройки) я эти надстройки вижу как активные/подключенные.

С XLAM-надстройкой проблему я решил просто. В скрипт выше добавил строку:
Код
Set xlWb = xlApp.Workbooks.Open("C:\Users\User\Documents\MoяНадстройка.xlam")

А вот с COM надстройкой засада. Ни как не могу заставить работать.
Пробовал манипуляции с:
Код
xlApp.EnableEvents = false/true
xlApp.IgnoreRemoteRequests = false/true
xlApp.AutomationSecurity = 1
xlApp.AddIns.Add("C:\Users\User\Documents\НадстройкаCOM.dll").Installed = True 
xlApp.AddIns("НадстройкаCOM.dll").Installed = True
xlApp.VBE.ActiveVBProject.References.AddFromFile "C:\Users\User\Documents\НадстройкаCOM.dll"

Может кто сталкивался с подобным?
 
запустите иксель shell-ом и возьмите его getobject-ом
Живи и дай жить..
 
Цитата
Andrew написал: У меня в excel есть подключенные XLAM и COM надстройки. При открытии excel скриптом выше, надстройки не подключаются.
Инсталлированные COM надстройки при этом должны загружаться сами по себе, проверьте еще раз.
 
Цитата
ZVI написал: Инсталлированные COM надстройки при этом должны загружаться сами по себе, проверьте еще раз.
Проверял не однократно. К сожалению, этого не происходит. Точнее, как я и указывал выше, надстройки загружаются и в панели надстроек я их вижу как подключенные и активные, но при этом они не функциональны. Словно находятся в каком-то спящем режиме.

Цитата
Слэн написал: запустите иксель shell-ом и возьмите его getobject-ом
Попробовал через shell, а именно:
Код
set wShell = WScript.CreateObject("WScript.Shell")
iRes = wShell.Run("EXCEL.EXE", 1)
Excel запускается, но тут возникает другая проблема. Если у меня до был запущен и работает какой-либо excel-макрос, то запущенный через shell новый экземпляр приложения Excel не будет доступен до тех пор, пока указанный макрос не завершит свою работу. Т.е. книга (новый экземпляр Excel) открылась, но все время горит сообщение "Microsoft Excel ожидает, пока другое приложение завершит действие OLE."

Как я понял, открытие через shell аналогично команде: excel.exe /x
В обоих случаях новый экземпляр эксель ждет пока завершит работу макрос в другом процессе.

Конечно, можно перед запуском исходного макроса открыть нужное количество новых процессов (через shell либо через excel.exe /x), тогда они будут вполне функциональны. Но хотелось именно в процессе работы какого-либо кода создавать новый экземпляр и получать к нему доступ без ожидания окончания работы макроса. VBS скрипт в моем посте от 18 Июн 2015 20:06:05  это позволяет делать, но при этом не задействует нужные мне com-надстройки.
 
Цитата
Andrew написал: надстройки загружаются и в панели надстроек я их вижу как подключенные и активные, но при этом они не функциональны
Для тестирования в Excel 2010 32bit я включил COM надстройки: Acrobat PDFMaker Office COM AddIn и Fuzzy Lookup Add-In for Excel. Запустил код:
Код
Dim xlApp, xlWb, xlWs
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = TRUE ' <-- Отображение - сразу после CreateObject!
Set xlWb = xlApp.Workbooks.Add
Set xlWs = xlWb.Worksheets(1)
Set xlWs = Nothing: Set xlWb = Nothing: Set xlApp = Nothing
Обе COM-надстройки работают. Проверьте у себя с одной из указанных выше надстроек, обратите внимание на комментарий в коде. Сначала убедитесь, что COM -надстройки работают при обычной ручном открытии Excel. Проверять на неизвестных настройках не советую, так как код в них или регистрация могут быть некорректными.
Если не сработает, то сообщите версию операционной системы, версию Excel и имя надстройки, с которой возникли проблемы.
Учтите, что Excel может и сам отключать надстройки при сбоях, такие надстройки попадают в список отключенных объектов.
Изменено: ZVI - 27.06.2016 16:55:16
 
Владимир, спасибо за помощь.

Проверил у себя с надстройкой "Fuzzy Lookup". С ней всё ок. После запуска vbs скрипта указанная надстройка работает.
А вот используемая мной надстройка так и не заработала. Скорее всего, дело в самой надстройке.

Использовал: Excel 2013 32bit
Надстройка: Smart View (от Oracle), ссылка
Страницы: 1
Читают тему
Наверх