我正在使用Visio 2016和VBA,并且正在处理具有100多个标签的Visio文件。我需要提取数据(主要是文本,与/之间的连接器和形状)以进行处理引擎的数据处理。
我试图弄清楚如何在Visio中获得形状类型名称。例如,在流程图中,我试图找出如何判断形状是否是过程,决策,数据等。
使用shape type属性似乎总是返回3,它似乎是https://docs.microsoft.com/en-us/office/vba/api/visio.visshapetypes中的visTypeShape。
任何人都不知道如何使用VBA获得形状类型吗?我也可以直接从OpenXML文件中解析XML,但是我也无法在XML文件中找到形状名称。
我先感谢您的帮助。
答案 0 :(得分: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