Страница: 1 |
Страница: 1 |
Вопрос: Создание надстройки к екселю
Добавлено: 07.09.06 10:45
Автор вопроса: krulik
Народ расскажите плиз как создавать надстройки для екселя. Горю! Очень нужно! Изначально писал просто на VBA прогу в книге екселя. Но сейчас стро встала необходимость организовать все в виде надстройки (которая должна создавать свое меню с доступом ко всем возможностям).
Я понимаю что все объекты доступны через OLE Automation но на чем нужно писать надстройки да и как я не представляю. Подскажите пдиз. А еще лучше ссылки на какиенебудь статьи связанные с этой темой
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Дмит
Вопросов: 11
Ответов: 160
Web-сайт:
Профиль | | #1
Добавлено: 07.09.06 10:56
Если тебе простую надстройку, то просто сохрани файл xls, как xla.
Номер ответа: 2
Автор ответа:
krulik
Вопросов: 1
Ответов: 1
Профиль | | #2
Добавлено: 07.09.06 11:20
Что значит простая надстройка? И какой вариант сложный?
Эта надстройка по идее будет на серваке лежать и подгружаться на несколько машин.
Номер ответа: 3
Автор ответа:
Незнайка
Вопросов: 7
Ответов: 188
Профиль | | #3
Добавлено: 08.09.06 07:33
Создаешь собственно саму надстройку.
Файл-Сохранить как-xla.
Дальше выкладываешь в сеть в каталог, чтобы у тебя к файлу полный доступ - у остальных - только чтение.
Дальше чтобы она прописалась у всех рассылаешь им файлик с таким кодом:
Dim Надстройка As AddIn, НадстройкаНайдена As Boolean
For Each Надстройка In AddIns
If Надстройка.Name = "ИМЯ_НАДСТРОЙКИ_БЕЗ_ПУТИ.xla" Then
НадстройкаНайдена = True
If Надстройка.Installed = False Then
Надстройка.Installed = True
MsgBox "Надстройка активирована."
Exit For
End If
End If
Next Надстройка
If НадстройкаНайдена = False Then
Set Надстройка = AddIns.Add("ИМЯ_НАДСТРОЙКИ_С_ПОЛНЫМ_ПУТЕМ.xla", False)
Надстройка.Installed = True
MsgBox "Надстройка установлена."
End If
End Sub
Далее размести следующий код на событие при открытии надстройки (делается также как для книги):
Private Sub Workbook_Open()
СозданиеПанели
End Sub
Далее сама процедура создания меню выглядит так (размещается в любом стандартном модуле надстройки):
Dim Панель As CommandBar
Dim Элемент As CommandBarControl
For Each Панель In Application.CommandBars
If Панель.BuiltIn = False Then 'если панель не встроенная
Панель.Delete 'удаляем ее
End If
Next Панель
Set Панель = Application.CommandBars.Add(Name:="ЖелаемоеНазваниеПанели", Position:=msoBarRight)
Панель.Protection = msoBarNoMove + msoBarNoChangeVisible + msoBarNoCustomize
Панель.Visible = True
Set Элемент = Панель.Controls.Add(Type:=msoControlButton)
Элемент.Style = msoButtonIcon 'стиль кнопки
Элемент.FaceId = 53 'номер картинки отображаемой на кнопке
Элемент.OnAction = "ИмяЗапускаемойПроцедуры" 'процедуры естественно располагаются в файле надстройки
Элемент.TooltipText = "Запуск процедуры Имя...." 'подсказка отображаемая при наведении на кнопку
'... итак для каждой кнопочки
End Sub