在形状下降时将 shapes/pages 添加到 visio

Adding shapes/pages to visio on shape drop

您好,我是 visio 的 VBA 新手,我正在尝试向 visio 模板添加功能,以便在将特定形状拖放到页面上时将页面添加到活动文档中.我查看了 MSDN 并找到了一个使用 Application.ShapeAdded 函数的示例,但我正在使用的活动文档似乎没有响应我修改后的代码。

Private Sub Document_ShapeAdded(ByVal vsoShape As Visio.IVShape)

Dim vsoMaster As Visio.Master
'Get the Master property of the shape.
Set vsoMaster = vsoShape.Master
'If Visio shape added is named "SC" add a new page

If vsoMaster.Name = "SC" Then
    NewPage
End If

结束子

我删除了形状大师"SC",我确认这是形状大师的名字,但没有任何反应。 MSDN verbage 将 Application.ShapeAdded 描述为打开应用程序的事件侦听器。我是不是遗漏了什么或者是否有更好的方法来做到这一点我没有想到?

这是 MSDN 描述:https://msdn.microsoft.com/en-us/library/office/ff766392.aspx

Document_ShapeAdded 事件仅适用于 VBA 代码所在的文档。

您必须使用事件声明一个应用程序对象并让它监视该事件。

示例(在对象或 ThisDocument 模块中):

Private WithEvents App as Visio.Application
Private Sub App_ShapeAdded(ByVal Shape As IVShape)
    Call ActiveDocument.Pages.Add() ' etc..
End Sub

或者,如果它很简单,您可以在有问题的主形状上添加一个形状表 CALLTHIS 函数,它只会触发 VBA 例程来添加新页面或您必须做的任何事情。