1

Тема: Конструктор ленты для office 10

Здравствуйте!
Создаю ленту для word 10 в VS10, как присвоить значку запуск макроса в VBA Word?
Спасибо!

2

Re: Конструктор ленты для office 10

Я создаю ленту с помощью бесплатной программы Ribbon XML Editor, и даже в ней мало чего понимаю.

Мой шаблон/макросы для автоматической нумерации Word 2003, 2007, 2010 и т.д. (стили, названия, перекрестные ссылки, LISTNUM). Делюсь: http://vk.com/club_alex_bir

3

Re: Конструктор ленты для office 10

Если на Visual Studio в конструкторе, то там просто дважды щёлкнуть на кнопку. Автоматом откроется файл с кодом и будет создана процедура обратного вызова.

Post's attachments

Новая заметка Skitch.jpg 124.06 Кб, 1 скачиваний с 2015-04-13 

You don't have the permssions to download the attachments of this post.

4

Re: Конструктор ленты для office 10

Может пригодится?

<button id="__Cap15" label="Заголовок приложения" imageMso="PageNumbersInHeaderInsertGallery" onAction="ApplyStyle" tag="Заголовок приложения"/>

Это строка кода на кнопку из файла шаблона *.dotm к которому я прицепил свою ленту. Макрос вызывается командой onAction="ApplyStyle". В модуле прописана sub с этим же именем.
Для работы использовал Ribbon XML Editor

5

Re: Конструктор ленты для office 10

Спасибо! Разобрался я в конструкторе ленты. Выглядит запуск макроса так:

Private Sub Button1_Click(sender As System.Object, e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles Button1.Click
       
Globals.ThisAddIn.Application.Run("МойМакрос")

End Sub

smile

6

Re: Конструктор ленты для office 10

mikkelle пишет:
<button id="__Cap15" label="Заголовок приложения" imageMso="PageNumbersInHeaderInsertGallery" onAction="ApplyStyle" tag="Заголовок приложения"/>

Совет: вместо явного указания значка

imageMso="Значок"

лучше подтягивать его с помощью кода:

getImage="«Значок"

Прилагаю код для назначения значка в коде:

Public Function значок(control As IRibbonControl, ByRef image) As IPictureDisp
    
    Set image = CommandBars.GetImageMso("FilePrint", 32, 32)
    
End Function

В этой процедуре вам известно название кнопки (control.id). Вы можете создать таблицу с названием кнопки и названием значка для неё. Тогда эта процедура будет лезть в таблицу за нужным значокм.

Это идеальный вариант. Сделайте, как я посоветовал. Не пожалеете.
На скриншоте видно, что я просто выбираю нужный мне значок, и он залетает в таблицу. В xml-файл даже не лезу.

Post's attachments

Лента.png 283.85 Кб, 1 скачиваний с 2015-04-17 

You don't have the permssions to download the attachments of this post.

7

Re: Конструктор ленты для office 10

Забыл, что у вас Visual Studio.
Там эта процедура будет выглядеть так

    Function Значок(ByRef control As Office.IRibbonControl) As Object

        Select Case control.Id

            Case Is = "Кнопка1" : Return My.Resources.значок2
            Case Is = "Кнопка2" : Return My.Resources.Значок2


            Case Else : Return My.Resources.ЗначокПоУмолчанию

        End Select

    End Function