如何使用VBA在Visio中获取形状类型?

问题描述 投票:1回答:1

我正在使用Visio 2016和VBA,并且正在使用包含100多个选项卡的Visio文件。我需要为处理引擎的数据处理提取数据(主要是文本,连接器/来自和形状)。

我试图弄清楚如何在Visio中获取形状类型名称。例如,在流程图中,我试图找出如何判断形状是过程,决策,数据等。

使用形状类型属性似乎总是​​返回3,它似乎是来自https://docs.microsoft.com/en-us/office/vba/api/visio.visshapetypes的visTypeShape。

任何人都知道如何使用VBA获得形状类型?我也可以直接从OpenXML文件中解析XML,但我也无法在XML文件中找到形状名称。

我提前感谢任何帮助。

vba visio visio-vba
1个回答
2
投票

不知道为什么我的问题被低估了,但我只是想出了答案,所以我分享以防其他人遇到这个问题而我在其他任何地方找不到答案。

shape.Master.Name将返回形状名称,但是如果它不是形状,则需要先检查它是否为Nothing。我没有这样做,它一直打破脚本。

此代码段将遍历活动页面上的所有形状,并获取ID和形状名称:

Public Sub GetShapeAndID()

Dim visShape As Shape

For Each visShape In ActivePage.Shapes
    If Not visShape.Master Is Nothing Then
     Debug.Print visShape.ID & " - " & visShape.Master.Name
    End If
Next

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.