Создание надстроек

Автор Коша, 08.06.2008, 12:24

« назад - далее »

Коша

Не могли бы вы рассказать про создание надстроек в MS Excel? Чтобы при подключении создавалась новая панель с нужными кнопками на которые подвешены макросы. Если есть какие то ссылки для чайников, пожалуйста...    :'(


P.S. Ооооооочень надо, оооооочень срочно....

Шпец Докапыч

Цитата: Коша от 08.06.2008, 12:24
Не могли бы вы рассказать про создание надстроек в MS Excel?

Расскажу, немного :) Создание самой надстройки и её прикручивание проблем не составляет: сохраняем книгу как .xla, после чего через обзор в списке надстроек можно выбирать. В нашей надстройке нужен макрoc, который, при её инициализации, будут добавлять панельки, на панельки кнопочки, на кнопочки коды... За это отвечает Workbook_AddinInstall. Подробнее по ссылкам:
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Шпец Докапыч

Цитата: Шпец Докапыч от 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 это номер картинки на кнопке. Может есть какой-то список соответствий? Сколько ни гигулила ничего такого не нашла, а сидеть и подбирать цифирки это слишком долго...

Шпец Докапыч

#5
Может, Вам понравится больше такой вариант:
      ПУНКТ.Picture = stdole.StdFunctions.LoadPicture("C:\МояКартинка.bmp")

Причём картинка не обязательно должна быть 16х16. С высоким расширением она становится лишь ярче  ;)
Знания недостаточно, необходимо применение. Желания недостаточно, необходимо действие. (с) Брюс Ли

Коша

Спасибо ещё раз :) Будем пробовать...

Коша

Появилась проблема с надстройкой... Прикручиваю нормально, панельку рисует, но не запускает макросы по нажатию на кнопки.
Выдаёт ошибку: Object variable or with block variable not set...
Выкладываю надстройку и файл, который должен идти вместе с ней для её работы...

elenaorlova

Да, есть над чем подумать....

Raikhman

#9

Советую заглянуть на сайт http://excelvba.ru
Там серьезный человек, который делает такие штучки под заказ, или, подскажет реально.

EducatedFool

Раз уж тут прорекламировали мой сайт, дам и ссылку на пример надстройки, создающей при запуске панель инструментов:
http://excelvba.ru/tools/CommandBar

Prist

Дополню ссылкой на статью с описанием создания надстроек:
Как создать свою надстройку?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
www.excel-vba.ru
Просто СПАСИБО [+оказать+]
Считаешь СПАСИБО мало? Яндекс.Деньги: 41001332272872; WM: R298726502453