在形状上添加形状/页面到visio

时间:2016-10-31 13:37:00

标签: vba visio

您好我对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

End Sub

我放下了形状大师“SC”,我确认它是形状大师的名字,没有任何反应。 MSDN verbage将Application.ShapeAdded描述为打开的应用程序的事件侦听器。我错过了什么或者有没有更好的方法可以做到这一点我不想?

以下是MSDN说明:https://msdn.microsoft.com/en-us/library/office/ff766392.aspx

1 个答案:

答案 0 :(得分:0)

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例程来添加一个新页面或者你必须做的任何事情。