Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 18:06   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию добавление надстройки в список подключенных

добрый вечер))

подскажите пожалуйста, как программно прописать, чтобы надстройка добавлялась в список подключенных.. у меня выдает ошибку, не соображу, как правильно Т_Т

Код:
Sub ДобавлениеНадстройки()
   ' проверяем наличие файла в списке подключенных надстроек,
   ' и, если находим его в этом списке, - отключаем надстройку
   ' потом подключаем ее заново
   ActiveWorkbook.IsAddin = True 'скрыть листы файла
   Dim AI As AddIn
    For Each AI In Application.AddIns    ' перебираем все надстройки
       If AI.Name = ThisWorkbook.Name Then AI.Installed = False
    Next AI
    AddIns("CommandBar").Installed = True 'ОШИБКА
    'ActiveWorkbook.IsAddin = False 'показать листы файла
End Sub
Bape}l{ka вне форума Ответить с цитированием
Старый 15.02.2012, 19:39   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а с чего Вы взяли, что среди надстроек есть надстройка с имененм CommandBar???
ее нет в коллекции - вот и ошибка.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.02.2012, 20:11   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

А обязательно подключать надстройку?
Может, достаточно добавить надстройку в автозагрузку Excel?
EducatedFool вне форума Ответить с цитированием
Старый 16.02.2012, 10:42   #4
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

IgorGO, т.е. получается, что так подключаются только надстройки, которые есть в списке по умолчанию? те которые мы через "обзор" ищем в других папках, надо сначала собственно найти?

AddIns("CommandBar").Installed = True


EducatedFool, возможно и правда легче добавить файл в автозагрузку эксель.
признаться, я думала ,что подключение надстройки это тоже самое, что добавление ее в автозагрузку =ь
Bape}l{ka вне форума Ответить с цитированием
Старый 16.02.2012, 11:43   #5
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

не совсем в тему...
если у меня есть несколько макросов в разных книгах и я хочу из них создать общую автоподгружаемую надстройку. можно ли их так и оставить в разных книгах?? не перепутаются ли надстройки, создаваемые каждой книгой, когда будут подгружаться к открываемому эксель-документу??
Bape}l{ka вне форума Ответить с цитированием
Старый 16.02.2012, 13:43   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
если у меня есть несколько макросов в разных книгах и я хочу из них создать общую автоподгружаемую надстройку. можно ли их так и оставить в разных книгах??
В более понятной терминологии, ваш вопрос звучит примерно так:

У меня есть в банке зеленый горошек, в мешке в шкафу - лук, в холодильнике - майонез.
Могу ли я из них сделать салат, но чтобы все продукты остались на своих местах?
(майонез - в холодильнике, лук - в мешке, и т.д.)


И как нам на него ответить?
EducatedFool вне форума Ответить с цитированием
Старый 16.02.2012, 14:56   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Игорь, а когда мы смотрим фильм online (или по ТВ) - его убывает в "холодильнике"?
Кстати, что говорит ACTA об online просмотре?
Я думаю, что можно сделать и так - но стОит ли это работы по реализации такой штуки?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.02.2012, 15:48   #8
Skif-F
Форумчанин
 
Регистрация: 24.03.2010
Сообщений: 349
По умолчанию

Я для своих надстроек использую такой вариант - самоустановка надстройки. Например, запускаю файл "SetUp Надстройка.xlam", и файл копирует себя в каталог, где лежат надстройки, но уже под именем "Надстройка.xlam", и подключает себя в надстройки.
Следующий код я размещаю в модуле "ЭтаКнига"
Код:
Private Const ThisName = "Надстройка.xlam"  'Под этим именем надстройка будет подключена

Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Install     'Устанавливаем надстройку
    Application.ScreenUpdating = True
End Sub

Private Sub Install()   'Устанавливаем надстройку
    Dim ad As AddIn, UserLibraryPath As String, TWB As Workbook, MyName As String
    Dim FN As String, MBR As VbMsgBoxResult, fso, Flag As Boolean, Wb As Workbook
    
    Set fso = CreateObject("Scripting.FileSystemObject")  'Объект для работы с файлами

    Set TWB = ThisWorkbook
    FN = TWB.FullName
    MyName = Right(FN, Len(FN) - InStrRev(FN, "\"))  'Выделяем имя из пути
    Flag = False 'Флаг, сигнлизирующий, что такая надстройка была
    For Each ad In Application.AddIns   'Перебираем надстройки
        If ad.Name = ThisName Then      'Если имя надстройки совпадает с нашим
            If ad.FullName = TWB.FullName Then Exit Sub 'Проверяем, "не мы ли это"
            'Если не мы, то советуемся с пользователем:
            MBR = MsgBox("Надстройка " + ThisName + " существует. Заменить?", vbYesNo, "Внимание!")
            If MBR = vbNo Then Exit Sub 'Если заменять не надо
            ad.Installed = False        'Отключаем
            Flag = True                 'Сигналим, что такая надстройка была
            On Error Resume Next  'Включаем обработку ошибок
                Kill ad.FullName            'Удаляем файл
            On Error GoTo 0         'Отключаем обработку ошибок
            Exit For
        End If
    Next ad
    UserLibraryPath = Application.AddIns.Parent.UserLibraryPath 'Путь до надстроек
    On Error Resume Next  'Включаем обработку ошибок
    fso.CopyFile TWB.FullName, UserLibraryPath + ThisName, True 'Копируем свой файл
    On Error GoTo 0         'Отключаем обработку ошибок
    Set Wb = Workbooks.Add
    If Not Flag Then
        Set ad = AddIns.Add(Filename:=UserLibraryPath & ThisName, CopyFile:=True) 'Если такой надстройки не было, подключаем её
    End If
    ad.Installed = True         'Включаем свою надстройку
    Wb.Close False  'После установки, закрываем текущую книгу
End Sub
Нет нерешаемых задач - есть недостаток времени и данных!
Skif-F вне форума Ответить с цитированием
Старый 16.02.2012, 16:36   #9
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Skif-F, это наверно тот вариант, который мне подойдет больше всего, спасибо))
Bape}l{ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление в список, С++ Stiker Помощь студентам 3 28.05.2011 21:36
ServerSocket Список подключенных клиентов casper0094 Работа с сетью в Delphi 6 18.07.2010 00:56
Список DLL подключенных к процессу Horus92 Win Api 9 01.07.2010 09:32
добавление числа в список (си) zhenya.ya Помощь студентам 0 11.04.2010 21:29
Добавление в список ManU Помощь студентам 3 28.09.2008 12:55