Не могли бы вы рассказать про создание надстроек в MS Excel? Чтобы при подключении создавалась новая панель с нужными кнопками на которые подвешены макросы. Если есть какие то ссылки для чайников, пожалуйста... :'(
P.S. Ооооооочень надо, оооооочень срочно....
Цитата: Коша от 08.06.2008, 12:24
Не могли бы вы рассказать про создание надстроек в MS Excel?
Расскажу, немного :) Создание самой надстройки и её прикручивание проблем не составляет: сохраняем книгу как .xla, после чего через обзор в списке надстроек можно выбирать. В нашей надстройке нужен макрoc, который, при её инициализации, будут добавлять панельки, на панельки кнопочки, на кнопочки коды... За это отвечает
Workbook_AddinInstall. Подробнее по ссылкам:
- "Макросы.AddIns" (http://msoffice.nm.ru/faq/macros/addins.htm)
- "Как создать надстройку COM (COM Add-In) для Office 2000 в Visual Basic" (http://www.allok.ru/?id=9)
- "Создание надстроек в Microsoft Excel 97" (http://excelvba.narod.ru/x/art_1.htm)
Цитата: Шпец Докапыч от 08.06.2008, 18:44
В нашей надстройке нужен макрoc, который, при её инициализации, будут добавлять панельки, на панельки кнопочки, на кнопочки коды...
Вот ещё, в нагрузку, простейший пример:
Private Sub Workbook_AddinInstall()
With Application.CommandBars("Worksheet Menu Bar").Controls 'работаем с менюшкой
Set SH = .Add(Type:=msoControlPopup, Before:=.Count) 'создаём новый пункт
SH.Caption = "ШпецМеню" 'обзываем его
End With
Set ПУНКТ = SH.Controls.Add(Type:=msoControlButton, Before:=1) 'добавляем подпункт
ПУНКТ.Caption = "ШамыйПервый" 'обзываем его
ПУНКТ.OnAction = "НашаНадстройка.xla!Макрос1" 'привязываем код
End Sub
PS: Также следует научиться убирать за собой после отключения надстройки :)
Спасибо, Шпец :)
Кстати, может ещё поможете на счёт панелек и кнопочек? Как их сделать, я поняла, только один вопрос.
'Создание кнопок с рисунком
With .Add(Type:=msoControlButton, ID:=???)
.TooltipText = "Формирование списков"
.OnAction = "FormSp"
End With
Из того, что я вычитала ID это номер картинки на кнопке. Может есть какой-то список соответствий? Сколько ни гигулила ничего такого не нашла, а сидеть и подбирать цифирки это слишком долго...
Может, Вам понравится больше такой вариант:
ПУНКТ.Picture = stdole.StdFunctions.LoadPicture("C:\МояКартинка.bmp")
Причём картинка не обязательно должна быть 16х16. С высоким расширением она становится лишь ярче ;)
Спасибо ещё раз :) Будем пробовать...
Появилась проблема с надстройкой... Прикручиваю нормально, панельку рисует, но не запускает макросы по нажатию на кнопки.
Выдаёт ошибку: Object variable or with block variable not set...
Выкладываю надстройку и файл, который должен идти вместе с ней для её работы...
Да, есть над чем подумать....
Советую заглянуть на сайт http://excelvba.ru (http://excelvba.ru)
Там серьезный человек, который делает такие штучки под заказ, или, подскажет реально.
Раз уж тут прорекламировали мой сайт, дам и ссылку на пример надстройки, создающей при запуске панель инструментов:
http://excelvba.ru/tools/CommandBar
Дополню ссылкой на статью с описанием создания надстроек:
Как создать свою надстройку? (http://www.excel-vba.ru/chto-umeet-excel/kak-sozdat-svoyu-nadstrojku/)