All Forums
 Категория Visio
 Форум Вопросы и ответы
 Привязка макроса к тулбару
Author Previous Topic Topic Next Topic  

WiseChen

Russia
12 Posts

Posted - 10/26/2003 :  13:11:36
Есть такая проблема:
Не могу привязать Макрос к кнопке на тулбаре.
В файле plan.vss содержится модуль Module1,
в нем процедура WiseMacro.
В этом же модуле создается Тулбар, с
единственной кнопкой. Пишу, как белый человек:
Action="WiseMacro"
ну и выдается ошибка на метод Action :(
пробовал по разному и добивался либо ругни на
Action либо говорит Ok, но нажимаю на кнопку
а видимых эфффектов нет (к слову в макросе
открывается формочка).
Скажите мой милый All как же все таки правильно
писать. Заранее спасиб.

PS а в ворде это мог сделать простой юзер.
Сграбастали мелкомягкие Визио, а доделвывать
кто будет ???

Tumanov

Russia
1198 Posts

Posted - 10/26/2003 :  13:48:27
А почему Action=, а не AddOnName = ?
Go to Top of Page

WiseChen

Russia
12 Posts

Posted - 10/28/2003 :  15:39:06
quote:
Originally posted by Tumanov

А почему Action=, а не AddOnName = ?


AddOn это же внешний exe?!
Я не собвсем правильно объяснил
Привожу листинг:
' ----------module1--------
Public Sub CreateCommandBar()

' попытка работы с CommandBar

Dim cbrCommandBars As Office.CommandBars
Dim cbrCommandBar As Office.CommandBar
Dim cbbCommandBarButton As Office.CommandBarButton
Dim vsoApplication As Visio.Application
Dim strCommandBarName As String

On Error GoTo CreateCommandBar_Err

Set vsoApplication = Application
strCommandBarName = "WiseCommandBar"

Set cbrCommandBars = vsoApplication.CommandBars

' Add a new CommandBar object that only exists through
' this session of Visio.
Set cbrCommandBar = cbrCommandBars.Add(strCommandBarName)

' Do not allow users to modify the new CommandBar.
cbrCommandBar.Protection = msoBarNoCustomize

' Add a button to the bar.
Set cbbCommandBarButton = cbrCommandBar.Controls.Add( _
Type:=msoControlButton)

' Make it run a VBA Macro.
With cbbCommandBarButton
.Caption = "VBA Macro"
.TooltipText = "WiseMacro"

' Use the Tag property for context switching and
' for use with the FindControl method.
.Tag = "cbbVBAMacro"

' Get an internal icon for the button.
.FaceID = 7076

' Use OnAction to run a VBA macro contained in
' this document.
cbbCommandBarButton
.AddOnName
.OnAction = "plan.Modules.Module1.WiseMacro"
' .OnAction = "Stencil1.Array Shapes"
End With


' Set a reference to the CommandBar button
' in the event handling class.
Set mmsoEventClass.MyCommandBarButton = _
cbbCommandBarButton

Exit Sub

CreateCommandBar_Err:
MsgBox Err.Description

End Sub
'........
В этом же модуле процедура WiseMacro
Go to Top of Page

Tumanov

Russia
1198 Posts

Posted - 10/28/2003 :  21:22:16
Два варианта - либо с модулями что-то перемудрили, либо ошибка в другом месте.
Вот такой код у меня отлично работает:

Public Sub CreateCommandBar()
' попытка работы с CommandBar
Dim cbrCommandBars As Office.CommandBars
Dim cbrCommandBar As Office.CommandBar
Dim cbbCommandBarButton As Office.CommandBarButton
Dim vsoApplication As Visio.Application
Dim strCommandBarName As String

Set vsoApplication = Visio.Application
strCommandBarName = "WiseCommandBar"
Set cbrCommandBars = vsoApplication.CommandBars
Set cbrCommandBar = cbrCommandBars.Add(strCommandBarName)
cbrCommandBar.Protection = msoBarNoCustomize
Set cbbCommandBarButton = cbrCommandBar.Controls.Add( _
Type:=msoControlButton)
With cbbCommandBarButton
.Caption = "VBA Macro"
.TooltipText = "WiseMacro"
.Tag = "cbbVBAMacro"
.FaceID = 7076
.OnAction = "ThisDocument.ttt"
End With
Exit Sub

CreateCommandBar_Err:
MsgBox Err.Description

End Sub
Sub ttt()
MsgBox "Работает"
End Sub

От Вашего отличается только тем, что макрос сидит не в vss, а в ThisDocument.
Еще может быть сказывается следующее:
Если Тулбар один раз создался, то вторая попытка создать такой же тулбар приводит к ошибке (такой тулбар уже есть). Например, в процессе выполнения макроса создается тулбар, затем через несколько строк сидит код, который вызывает ошибку и макрос сваливается. Потом Вы чините код, убираете ошибку. Вы повторно запускаете макрос, но теперь уже он будет сваливаеться каждый раз при создании тулбара.
Go to Top of Page

WiseChen

Russia
12 Posts

Posted - 10/31/2003 :  12:42:25
>Еще может быть сказывается следующее:
>Если Тулбар один раз создался, то вторая попытка создать такой же >тулбар приводит к ошибке (такой тулбар уже есть). Например, в >процессе выполнения макроса создается тулбар, затем через несколько >строк сидит код, который вызывает ошибку и макрос сваливается. Потом >Вы чините код, убираете ошибку. Вы повторно запускаете макрос, но >теперь уже он будет сваливаеться каждый раз при создании тулбара.
Ну я как бы удаляю тулбар, созданный в предыдущий раз.
>От Вашего отличается только тем, что макрос сидит не в vss,
>а в ThisDocument.
Да, спасибо, если макрос в документе vsd все работает. Однако проблемы это к сожалению не решило.
Вся идея в том чтобы иметь один файл vss на все мои документы, соответственно макросы хранить надо именно в vss
Все попытки привязать макрос из plan.vss у меня потерпели неудачу.
Go to Top of Page

WiseChen

Russia
12 Posts

Posted - 11/18/2003 :  16:08:28
Люди ну неужели никто не вызывал макрос из vss Файла???? помогите пожалуйста
Go to Top of Page

immortal

Russia
391 Posts

Posted - 12/10/2003 :  13:42:05  Visit immortal's Homepage
quote:
Originally posted by WiseChen

Люди ну неужели никто не вызывал макрос из vss Файла???? помогите пожалуйста



почему я спокойно запускаю, только не извращаюсь с панелями, а из меню макрос доступен из Tools -> Macros -> "имя файла vss" -> имя модуля -> имя макроса
Go to Top of Page

zhuravsky

Russia
115 Posts

Posted - 07/16/2007 :  14:05:36
Ответ найден здесь:
http://msdn2.microsoft.com/en-us/library/aa201813(office.10).aspx
Т.е. нужно что-то типа:
plan!ThisDocument.WiseMacro
Go to Top of Page
  Previous Topic Topic Next Topic  
Данный сайт является архивом форума visio.artberg.ru, который был закрыт в связи с переходом на новую платформу visio.getbb.ru
Все материалы доступны только для чтения! Если у вас появились вопросы, или вы хотите что-то обсудить, связанное с Visio, обращайтесь на новый форум!
Архив был создан благодаря совместным усилиям Генадия Туманова @Tumanov (visio.artberg.ru), Александра ака @Surrogate (visio.getbb.ru), и Николая Белых @nbelyh (unmanagedvisio.com)