Страницы: 1
RSS
VBA. Запуск Excel с надстройками из другого приложения, Не загружаются надстройки
 
Доброго времени суток!
Вот если из проводника открывать Excel-файл, то этот файл открывается с пользовательскими надстройками, например, с Plex и другими.
Возникла необходимость открыть его из другого приложения (в моем случае это AutoCad, но, полагаю, разницы-то нет никакой).

Я, как более ли менее разбирающаяся на своем микроуровне макросах, пользуюсь таким кодом:

Код
Set oExcel = CreateObject("Excel.Application")
oExcel.workbooks.Open sWB
oExcel.activeworkbook.SaveAs sFN

Но проблема в том, что книга после этой манипуляции открывается без надстроек (без Plex и без других, соответственно).
Как запустить с надстройками?

Спасибо.
Изменено: Diana Tailor - 01.04.2018 08:49:12
 
Diana Tailor, посмотрите тут - https://support.microsoft.com/ru-ru/help/213489/add-ins-do-not-load-when-using-the-createobject-comm...
 
Diana Tailor, да, по команде CreateObject("Excel.Application") приложение запускается без надстроек и без Personal.xls(b).
Но если в проекте открываемой книге созданы ссылки на проекты других файлов (надстроек или просто книг), то они открываются - сейчас проверил на Personal.
Чтобы создать ссылку, проще всего в панели Project "перетащить" проект надстройки на проект книги. Если будет сообщение о конфликте имен, переименуйте тот или другой проект в панели Properties.
 
Казанский, спасибо за разъяснение. Ну не совсем проще, я бы сказала, можно просто закрыть книгу и открыть, тогда становятся доступными надстройки.
Апострофф, спасибо за ссылку почитала, и, как следствие, назрел вопрос:

А возможно ли не открывая Excel (приложение не запущено) узнать, какие надстройки к нему подключены на текущий момент с помощью VBA и по каким путям они прописаны? Чтобы при загрузке из моего макроса одновременно эти надстройки и загрузить циклом?

Спасибо большое.
 
Или, как вариант, может быть, существует альтернативный запуск Excel из другого приложения, без использования CreateObject("Excel.Application"), в котором загружаются подключенные надстройки?

Поясню, цель операции - это когда созданная книга у меня остается открытой на экране приложения, хотелось бы, чтобы сразу панельки с надстройками были уже на ленте.
Изменено: Diana Tailor - 01.04.2018 09:38:28
 
Код
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oExcel.workbooks.Open "D:\...\нужная надстройка .xlam"
oExcel.workbooks.Open sWB
oExcel.activeworkbook.SaveAs sFN
 
Цитата
Diana Tailor написал:
может быть, существует альтернативный запуск Excel из другого приложения, без использования CreateObject("Excel.Application"), в котором загружаются подключенные надстройки?
Если речь про VBA, то shell "excel.exe" :)
То есть можно сформировать книгу в невидимом экземпляре приложения, созданным с помощью CreateObject("Excel.Application"), сохранить книгу в TEMP, закрыть этот экземпляр Excel, открыть сохраненную книгу через ассоциированное в системе приложение, например
Код
shell "cmd /c c:\temp\1.xls"
 
RAN, спасибо, за пример. Это-то я поняла, вопрос состоял в другом:
Вот открываем Excel из проводника (любой xls* файл), и смотрим, какие надстройки на текущий момент времени сейчас подключены (у меня их, например, 6, но бывает, что подключены сейчас только 3). И, следовательно, именно эти надстройки и надо загрузить. Т.е. в данном случае необходимо узнать, какие из надстроек будут нужными :) чтобы не загружать все, а потом уже, как в Вашем примере, уже их подключить по абсолютному пути.

Казанский, как вариант :) не догадалась бы. Спасибо.
 
Цитата
Diana Tailor написал:
какие надстройки на текущий момент времени сейчас подключены
Смотрим в сторону Application.Addins2 и свойства Addin.IsOpen
Владимир
 
Код
Sub ww()
    Dim ad As AddIn, oExcel As Application
    Set oExcel = CreateObject("Excel.Application")
    oExcel.Workbooks.Add
    oExcel.Visible = True
    For Each ad In oExcel.AddIns
        If ad.Installed Then oExcel.Workbooks.Open ad.FullName
    Next
End Sub
 
RAN, спасибо большое.
Единственное, если переменные объявить как AddIn и Application, то вылезает ошибка компиляции "Method or data member not found", а если как Object, то все ок!
Спасибо всем за помощь!
Изменено: Diana Tailor - 02.04.2018 08:31:53
Страницы: 1
Наверх