【问题标题】:Adding shapes/pages to visio on shape drop在形状放置时将形状/页面添加到 visio
【发布时间】:2017-03-13 14:29:30
【问题描述】:

您好,我对 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 措辞将 Application.ShapeAdded 描述为打开的应用程序的事件侦听器。我是否遗漏了什么,或者有没有更好的方法可以做到这一点,我没有想到?

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

【问题讨论】:

    标签: vba visio


    【解决方案1】:

    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
    

    或者,如果它很简单,您可以在相关主形状上添加一个 shapesheet CALLTHIS 函数,该函数只会触发一个 VBA 例程来添加新页面或您必须执行的任何操作。

    【讨论】:

    • 我能够在形状表的事件部分使用 CALLTHIS。谢谢!这很有帮助。
    • 太好了,看来答案对你有用,所以预计你会接受我的答案是正确的。谢谢。
    猜你喜欢
    • 2015-03-15
    • 1970-01-01
    • 2018-04-06
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    相关资源
    最近更新 更多