Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Создание кнопрки на странице Excel


Автор: TigraZver 31.5.2008, 16:15
Доброго времени суток народ.
Есть небольшая проблемка, может кто знает ... 
Нужно на листе Excelя  создать кнопочку и чтоб по её нажатию открывалась определенная  страница той же книги. 
Есть предложения?  

Автор: Naghual 31.5.2008, 18:18
Так а проблема то в чем?
Что именно не получается?

Автор: TigraZver 31.5.2008, 19:49
Цитата(Naghual @ 31.5.2008,  18:18)
Так а проблема то в чем?
Что именно не получается?

Вопрос как это сделать .
Через макрос или программно?
как кнопку засунуть на страницу? 

Автор: Naghual 31.5.2008, 23:55
Отмечаешь галочкой пункт меню   Вид > Панели Инструментов > Элементы управления.
У тебя появляется панелька с элементами управления.
Выбираешь на ней Кнопку и размещаеш ее на Листе.

Автор: bilya 1.6.2008, 05:11
Какой офис?

Автор: Naghual 1.6.2008, 10:21
bilya, а есть принципиальная разница?   Я просто с 2007 не работал - даже интересно как там.

Автор: TigraZver 1.6.2008, 14:58
Цитата(bilya @ 1.6.2008,  05:11)
Какой офис?

2003

Добавлено через 1 минуту и 27 секунд
Цитата(Naghual @ 31.5.2008,  23:55)
Отмечаешь галочкой пункт меню   Вид > Панели Инструментов > Элементы управления.
У тебя появляется панелька с элементами управления.
Выбираешь на ней Кнопку и размещаеш ее на Листе.

С кнопкой разобрались, спасибо. Теперь вопрос что писать?
Создавать макрос или есть какой то способ прописки действия?

Автор: mihanik 1.6.2008, 20:11
Вот так я делал в MS Outlook.
Код


' Подключимся к панели меню приложения...
    Set objOutlook = Application
    Set objMenuBar = objOutlook.ActiveWindow.CommandBars("Menu Bar")
    Call AppendToFile(strLogFileName, "Подключился успешно." & vbCrLf)

' Если на панели остались мои кнопки с предыдущих сеансов, то удалим их
    Call AppendToFile(strLogFileName, "Ищу ""старые"" кнопки и пытаюсь их удалить.")
    For Each i In objMenuBar.Controls
        If i.Caption = "Synhronyse" Then i.Delete
    Next
    Call AppendToFile(strLogFileName, "Результат: успешно." & vbCrLf)

' Создадим свою кнопку в панели меню и придадим ей нужный вид...
    Call AppendToFile(strLogFileName, "Пытаюсь создать собственную кнопку на панели ""Меню""")
    Set MyButton = objMenuBar.Controls.Add(Type:=msoControlButton)
    With MyButton
        .BeginGroup = True
        .Style = msoButtonIconAndCaption
        .FaceId = 195
        .Caption = "Synhronyse"
        .OnAction = "MyButton_Click"
    End With
    Call AppendToFile(strLogFileName, "Результат: успешно." & vbCrLf)


В Excel всё работает примерно так же.

Добавлено через 3 минуты и 3 секунды
Или загляни сюда: http://vbstreets.ru/VBA/Articles/65843.aspx

Добавлено через 8 минут и 44 секунды
Цитата

Дополнение панели инструментов

Листинг 3.40. Дополнение панели инструментов

Код

Sub AddCustomCommandBar()
   ' Добавление кнопки на панель инструментов
   With Application.CommandBars(3).Controls.Add(Type:=msoControlButton)
      .FaceId = 42            ' Значок Word
      .Caption = "Кнопка"
      .OnAction = "Макрос"
   End With
End Sub
Листинг 3.41. Добавление кнопки на панель инструментов
Sub AddCustomButton()
   ' Добавление кнопки на панель инструментов
   With Application.Toolbars(1).ToolbarButtons.Add(button:=222)
      .Name = "Кнопка"
      .OnAction = "Макрос"
   End With
End Sub

Примеры создания панелей инструментов

Листинг 3.42. Панель с одной кнопкой

Код

Sub CreateCustomControlBar()
   ' Создание панели инструментов
   With Application.CommandBars.Add(Name:="Панель", Temporary:=True)
      ' Создание и настройка кнопки
      With .Controls.Add(Type:=msoControlButton)
         .Style = msoButtonIconAndCaption
         .FaceId = 66
         .Caption = "Просто кнопка"
      End With
      ' Покажем панель
      .Visible = True
   End With
End Sub

Листинг 3.43. Панель с двумя кнопками

Код

Sub CreateCustomControlBar()
   ' Создание панели инструментов
   With Application.CommandBars.Add(Name:="Панель", Temporary:=True, _
    Position:=msoBarLeft)
      ' Создание и настройка первой кнопки
      With .Controls.Add(Type:=msoControlButton)
         .Style = msoButtonWrapCaption
         .Caption = "Просто кнопка"
      End With
      ' Создание и настройка второй кнопки
      With .Controls.Add(Type:=msoControlButton)
         .Style = msoButtonIconAndWrapCaption
         .Caption = "Кнопка"
         .FaceId = 225
      End With
      ' Покажем панель
      .Visible = True
   End With
End Sub

Листинг 3.44. Создание панели справа

Код

Sub CreateCustomControlBar()
   ' Создание панели инструментов
   With Application.CommandBars.Add(Name:="Правая панель", _
    Temporary:=True)
      ' Создание и настройка кнопки
      With .Controls.Add(Type:=msoControlButton)
         .Style = msoButtonWrapCaption
         .Caption = "Кнопка"
      End With

      ' Задание позиции - справа
      .Position = msoBarRight
      ' Покажем панель
      .Visible = True
   End With
End Sub



Формирование пользовательского меню

Листинг 3.45. Создание пользовательского меню (вариант 1)

Код

Sub AddCustomMenu()
   ' Добавление меню
   With Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, _
    Temporary:=True)
      .Caption = "Архив"
      With .Controls
         ' Добавление и настройка первого пункта
         With .Add(Type:=msoControlButton)
            .FaceId = 280
            .Caption = "Просмотр"
            .OnAction = "Макрос1"
         End With
         ' Добавление вложенного меню
         With .Add(Type:=msoControlPopup)
            .Caption = "База данных"
            With .Controls
               ' Добавление и настройка первого пункта _
                вложенного меню
               With .Add(Type:=msoControlButton)
                  .FaceId = 1643
                  .Caption = "Поставщики"
                  .OnAction = "Макрос2"
               End With
               ' Добавление и настройка второго пункта _
                вложенного меню
               With .Add(Type:=msoControlButton)
                  .FaceId = 1000
                  .Caption = "Покупатели"
                  .OnAction = "Макрос3"
               End With
            End With
         End With
      End With
   End With
End Sub


Листинг 3.46. Создание пользовательского меню (вариант 2)

Код

Sub AddCustomMenu1()
   ' Добавление меню с названием "Архив" в часть меню, _
    относящуюся к рабочей книге
   With MenuBars("Worksheet").Menus.Add(Caption:="Архив")
      ' Добавление кнопки
      .MenuItems.Add Caption:="Просмотр", OnAction:="Макрос1"
      ' Добавление подменю
      With .MenuItems.AddMenu(Caption:="База данных")
         ' Добавление пунктов подменю
         .MenuItems.Add Caption:="Поставщики", OnAction:="Макрос2"
         .MenuItems.Add Caption:="Покупатели", OnAction:="Макрос3"
      End With
   End With
End Sub


Листинг 3.47. Создание пользовательского меню (вариант 3)

Код

Sub AddCustomMenu2()
   ' Добавление меню с названием "Архив" в часть меню, _
    относящуюся к рабочей книге
   With MenuBars("Worksheet").Menus.Add(Caption:="Архив")
      ' Добавление кнопки
      .MenuItems.Add Caption:="Просмотр", OnAction:="Макрос1"
      ' Добавление подменю
      With .MenuItems.AddMenu(Caption:="База данных")
         ' Добавление первого пункта подменю
         With .MenuItems.Add(Caption:="Поставщики")
            ' Настройка кнопки
            .OnAction = "Макрос2"
         End With
         ' Добавление второго пункта подменю
         With .MenuItems.Add(Caption:="Покупатели")
            ' Настройка кнопки
            .OnAction = "Макрос3"
         End With
      End With
   End With
End Sub



Добавлено через 13 минут и 30 секунд
О!!!

Нашёл свой старый проект по Excel

Код

Sub MakeMyMenu()
Dim objCmndBars As CommandBars
Dim objCmndBar As CommandBar
Dim objMyButton As CommandBarButton

' Удаляем старое меню
    Set objCmndBars = Application.CommandBars
        For Each objCmndBar In objCmndBars
            If objCmndBar.Name = "Mihanik" Then objCmndBar.Delete
        Next
    Set objCmndBars = Nothing
    
' Создаём новое меню
    Set objCmndBar = Application.CommandBars.Add("Mihanik", msoBarTop)
        objCmndBar.Visible = True
        ' Добавим кнопки в созданное меню
        
        ' Кнопка "Создать новый документ"
        Set objMyButton = objCmndBar.Controls.Add(Type:=msoControlButton)
        With objMyButton
            .BeginGroup = True
            .Style = msoButtonIconAndCaption
            .FaceId = 195
            .Caption = "NewDoc"
            .OnAction = "NewDoc_Click"
        End With
        
        
    Set objCmndBar = Nothing


End Sub

Автор: Naghual 1.6.2008, 23:28
mihanik, крут!!!

Автор: mihanik 2.6.2008, 06:33
Но это всё немного не о теме.

Проще нарисовать обычную кнопку на листе и назначить простейший макрос.


Автор: Naghual 2.6.2008, 09:22
Цитата(mihanik @  2.6.2008,  06:33 Найти цитируемый пост)
Проще нарисовать обычную кнопку на листе и назначить простейший макрос.

Так вот и я о том-же!!!
 smile 

Автор: Staruha 2.6.2008, 10:20
Да уж mihanik как с цепи сорвался  Я конечно себе в копилочку smile запишу но начинающих ты ипугаешь просто таким кодом и у них отпадет все желание... smile  программировать

Код

 Лист2.Activate

так попроще будет

Добавлено @ 10:34
хотя впрочем ,если к примеру адрес -переменное значение например выбираем из списка
Код

Adrs = Лист4.Range("A4").Value
Adr = Лист4.Cells(4, Adrs)
A = Лист4.Cells(5, Adrs)

 Nam = Sheets.Parent.Name
Workbooks(Adr).Sheets(A).Activate
Workbooks(Adr).Sheets(A).Range("A1").Value = Nam

Автор: Staruha 2.6.2008, 10:38
Да тут в добавок открывается другая книга свернутая на столе

Автор: TigraZver 2.6.2008, 13:38
Ну народ порадовалиsmile 
Активненько smile И весьма продуктивненько! 

mihanik порадовал своим энтузиазмом  - взято на заметку smile Мерси.
Staruha ну зря ты так на Мишку... он молодца smile 
VB не в быту у меня, но с программированием знакомства есть , так что в основном все понятно.
Но все же сделала через макрос smile

так что всем спасибо еще раз и  наверно тему закрываю.

Автор: bilya 3.6.2008, 11:24
Naghual, дык в том и дело - не могу я в этом безобразии (2007) найти элементы управления (на всякий случай краснею). А вообще - по-моему - издевательство. Так перекрутить офис к которому за десятилетие народ уже привык и приспособился, и, по типу которого, даже всякие опен_офисы понаделали... Не люблю я его. Как не делаю что-нибудь в нем - так матерю

Автор: Staruha 3.6.2008, 14:03
Цитата

Staruha ну зря ты так на Мишку... он молодца

Мишка что надо smile 
 А это на дорожку
Цитата

Но все же сделала через макрос

 Идешь Сервис-Макрос-Макросы -ВОЙТИ
заходишь, а там код хватаешь его и кидаешь на кнопку smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)