Author |
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 = ? |
|
|
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 |
|
|
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. Еще может быть сказывается следующее: Если Тулбар один раз создался, то вторая попытка создать такой же тулбар приводит к ошибке (такой тулбар уже есть). Например, в процессе выполнения макроса создается тулбар, затем через несколько строк сидит код, который вызывает ошибку и макрос сваливается. Потом Вы чините код, убираете ошибку. Вы повторно запускаете макрос, но теперь уже он будет сваливаеться каждый раз при создании тулбара.
|
|
|
WiseChen
Russia
12 Posts |
Posted - 10/31/2003 : 12:42:25
|
>Еще может быть сказывается следующее: >Если Тулбар один раз создался, то вторая попытка создать такой же >тулбар приводит к ошибке (такой тулбар уже есть). Например, в >процессе выполнения макроса создается тулбар, затем через несколько >строк сидит код, который вызывает ошибку и макрос сваливается. Потом >Вы чините код, убираете ошибку. Вы повторно запускаете макрос, но >теперь уже он будет сваливаеться каждый раз при создании тулбара. Ну я как бы удаляю тулбар, созданный в предыдущий раз. >От Вашего отличается только тем, что макрос сидит не в vss, >а в ThisDocument. Да, спасибо, если макрос в документе vsd все работает. Однако проблемы это к сожалению не решило. Вся идея в том чтобы иметь один файл vss на все мои документы, соответственно макросы хранить надо именно в vss Все попытки привязать макрос из plan.vss у меня потерпели неудачу.
|
|
|
WiseChen
Russia
12 Posts |
Posted - 11/18/2003 : 16:08:28
|
Люди ну неужели никто не вызывал макрос из vss Файла???? помогите пожалуйста |
|
|
immortal
Russia
391 Posts |
Posted - 12/10/2003 : 13:42:05
|
quote: Originally posted by WiseChen
Люди ну неужели никто не вызывал макрос из vss Файла???? помогите пожалуйста
почему я спокойно запускаю, только не извращаюсь с панелями, а из меню макрос доступен из Tools -> Macros -> "имя файла vss" -> имя модуля -> имя макроса |
|
|
zhuravsky
Russia
115 Posts |
|
|
Topic |
|