Своя кнопка на стандартной панели Word

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

Добрый день!
Нужно чтобы во всех открываемых документах временно появлялась моя кнопка, создающая или удаляющая панель инструментов, которая в свою очередь выполняет некоторые функции.
Создать кнопку и панель труда не составило, все помещено в шаблон, шаблон положен в
Documents and Settings\%USERNAME%\Application Data\Microsoft\Word\STARTUP

А вот как сделать чтобы при закрытии документа эта кнопка удалялась?

AutoClose из шаблона не срабатывает, AutoExit срабатывает уже после закрытия документа. т.е. в документе остается неработающая кнопка (на других компах или после удаления шаблона)

При создании кнопки параметр Temporary=true не помогает (возможно не правильно применяю)
Коды:

Код: Выделить всё

Sub AutoExec() ' добавление кнопки
'MsgBox "AutoExec"
AddButton
End Sub

Sub autoclose() ' из шаблона не срабатывает, иначе бы не было вопросов
MsgBox "AutoClose"
End Sub

Sub AutoExit() ' срабатывает, но после сохр и закрытия документа
MsgBox "AutoExit"
ToolbarDelete
DELButton
End Sub
Кусок создания кнопки:

Код: Выделить всё

Set barControl = Word.CommandBars(1).Controls.Add(Type:=msoControlButton, temporary:=True)
  With barControl
  .BeginGroup = True

Код: Выделить всё

Sub Show_or_Hide_tool()
' вкл выкл панель
Dim ctrl As CommandBar
    For Each ctrl In CommandBars
        If ctrl.Name = cStrToolbarName Then
        ToolbarDelete
        Exit Sub
        End If
    Next

ToolbarCreat
End Sub

Sub ToolbarDelete()
    On Error Resume Next
    Dim ctrl As CommandBar
    For Each ctrl In CommandBars
        If ctrl.Name = cStrToolbarName Then
        CommandBars(cStrToolbarName).Delete
'        Exit Sub
        End If
    Next
End Sub
Итак, главный вопрос: Как из шаблона отследить закрытие документа чтобы удалить кнопку или как реализовать по-другому?
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

В общем, пока решил так: в шаблоне рядом со стандартной поставил маленькую панельку с одной кнопкой. при нажатии на эту кнопку панель перемещается вниз и на нее добавляются все остальные кнопки, при повторном нажатии все добавленное удаляется, а панель перемещается на место - после стандартной.
В таком варианте ни панель ни кнопки в документ не сохраняются.
Аватара пользователя
AlexEL
Сообщения: 24
Зарегистрирован: 23 авг 2008, 06:44
Контактная информация:

Зачем так усложнять? Если уж Ваш шаблон помещен в автозагрузку, то проще в нем создать постоянную кнопку без всяких макросов.

Перехват событий:
1. Перехват в модуле ThisDocument: Sub Document_Open, Sub Document_Close, Sub Document_New - открыт, закрыт, создан документ не основе этого шаблона или сам шаблон.
2. C помощью модуля класса организовать перехват событий для всех документов.

Про параметр Temporary забудьте. Согласно документации Word, он игнорируется.
Макросы под заказ и готовый пакет: http://methodichka.ru/
Аватара пользователя
Busine2009
Сообщения: 322
Зарегистрирован: 18 июл 2009, 15:34
Контактная информация:

RomaS
я не вникал, что тебе ответили. Вот мой ответ:
Если кнопки и панели инструментов находятся в шаблоне, который находится в Word\STARTUP, то
они не сохраняются в документе, насколько я понял.
Не понятно, что вам нужно.
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

AlexEL писал(а):Зачем так усложнять? Если уж Ваш шаблон помещен в автозагрузку, то проще в нем создать постоянную кнопку без всяких макросов.

Перехват событий:
1. Перехват в модуле ThisDocument: Sub Document_Open, Sub Document_Close, Sub Document_New - открыт, закрыт, создан документ не основе этого шаблона или сам шаблон.
2. C помощью модуля класса организовать перехват событий для всех документов.

Про параметр Temporary забудьте. Согласно документации Word, он игнорируется.

1. если Document_Open, Document_Close находятся в шаблоне то они не срабатывают.
2. А вот это было бы хорошо, но для создания класса пока не хватает знаний... А примера не имеется?
RomaS
Сообщения: 57
Зарегистрирован: 05 мар 2008, 09:59

Busine2009 писал(а):RomaS
я не вникал, что тебе ответили. Вот мой ответ:
Если кнопки и панели инструментов находятся в шаблоне, который находится в Word\STARTUP, то
они не сохраняются в документе, насколько я понял.
Не понятно, что вам нужно.

Не сохраняются только новые панели. А вот если добавить кнопку на стандартную панель (в шаблоне) - она остается и в документах. Проверено опытным путем
Terminators
Сообщения: 14
Зарегистрирован: 23 сен 2010, 11:13

RomaS
Я не понимаю, что надо.
Аватара пользователя
AlexEL
Сообщения: 24
Зарегистрирован: 23 авг 2008, 06:44
Контактная информация:

RomaS писал(а):... А примера не имеется?
Пример универсального класса для перехвата событий Application:
Вложения
AppEvents.zip
(1.77 КБ) 35 скачиваний
Макросы под заказ и готовый пакет: http://methodichka.ru/
Ответить