Страница 1 из 1

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

Добавлено: 20 сен 2010, 15:13
RomaS
Добрый день!
Нужно чтобы во всех открываемых документах временно появлялась моя кнопка, создающая или удаляющая панель инструментов, которая в свою очередь выполняет некоторые функции.
Создать кнопку и панель труда не составило, все помещено в шаблон, шаблон положен в
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
Итак, главный вопрос: Как из шаблона отследить закрытие документа чтобы удалить кнопку или как реализовать по-другому?

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

Добавлено: 21 сен 2010, 10:06
RomaS
В общем, пока решил так: в шаблоне рядом со стандартной поставил маленькую панельку с одной кнопкой. при нажатии на эту кнопку панель перемещается вниз и на нее добавляются все остальные кнопки, при повторном нажатии все добавленное удаляется, а панель перемещается на место - после стандартной.
В таком варианте ни панель ни кнопки в документ не сохраняются.

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

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

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

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

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

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

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

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

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

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

1. если Document_Open, Document_Close находятся в шаблоне то они не срабатывают.
2. А вот это было бы хорошо, но для создания класса пока не хватает знаний... А примера не имеется?

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

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

Не сохраняются только новые панели. А вот если добавить кнопку на стандартную панель (в шаблоне) - она остается и в документах. Проверено опытным путем

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

Добавлено: 23 сен 2010, 16:25
Terminators
RomaS
Я не понимаю, что надо.

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

Добавлено: 25 сен 2010, 20:51
AlexEL
RomaS писал(а):... А примера не имеется?
Пример универсального класса для перехвата событий Application: