Цитата:
Никогда не доводилось сталкиваться с макросами для мастер-шейпов.
Не совсем точная формулировка...
Макрос сажается в
трафарет. А вызывается при дропе мастер-шейпа из этого трафарета на страницу документа.
В качестве примера такого трафарета можно взять Sorting.vss
Там много всего, но нас интересует только одна процедура StartForm
В трафарете имеется единственный шейп, при дропе которого открывается форма. В шейпе прописано EventDrop=CALLTHIS("mSort.StartForm","Sorting")
то есть вызывается как раз эта процедура.
Естественно, для добавления секции на страницу процедуру нужно будет заменить. Например, на такую
Код:
Sub ttt()
Dim pg As Visio.Page
Set pg = ActivePage
pg.PageSheet.AddSection visSectionAction
pg.PageSheet.AddRow visSectionAction, visRowLast, visTagDefault
pg.PageSheet.CellsSRC(visSectionAction, 0, visActionMenu).FormulaU = Chr(34) & "NewAction" & Chr(34)
pg.PageSheet.CellsSRC(visSectionAction, 0, visActionAction).FormulaU = "DoCmd(1312)"
End Sub
Это опять же только пример. Полезно будет добавить проверку того, что секция уже существует (иначе будет ошибка), проверку количества строк в секции и т.д. Короче, включить все необходимые проверки, чтобы операция выполнялась надежно или хотя бы сообщалось об ошибках.