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