5
使用VBA,如何从Visio 2003图表中检索自定义形状信息。如何使用VBA检索Visio自定义形状信息
使用VBA,如何从Visio 2003图表中检索自定义形状信息。如何使用VBA检索Visio自定义形状信息
要获得自定形状一个Visio形状信息:
Function GetCustomPropertyValue(TheShape As Visio.Shape, ThePropertyName As String) As String
On Error Resume Next
GetCustomPropertyValue = TheShape.CellsU("Prop." & ThePropertyName).ResultStr(visNone)
End Function
所有这个函数的作用是使用上的形状cellsu属性来获取通过名称自定义属性的ShapeSheet单元格...
如果你是一个有关使用上的错误继续下一步坚持己见的人,你可以检查首先检查是否存在细胞,如果细胞存在:
if TheShape.CellExistsU("Prop." & ThePropertyName , 0) then
GetCustomPropertyValue = TheShape.CellsU("Prop." & THePropertyName).ResultStr(VisNone)
发现这一点,在http://visio.mvps.org/VBA.htm(自定义属性)
Public Sub CustomProp()
Dim shpObj As Visio.Shape, celObj As Visio.Cell
Dim i As Integer, j As Integer, ShpNo As Integer
Dim LabelName As String, PromptName As String, ValName As String, Tabchr As String
Open "C:\CustomProp.txt" For Output Shared As #1
Tabchr = Chr(9)
For ShpNo = 1 To Visio.ActivePage.Shapes.Count
Set shpObj = Visio.ActivePage.Shapes(ShpNo)
nRows = shpObj.RowCount(Visio.visSectionProp)
For i = 0 To nRows - 1
Set celObj = shpObj.CellsSRC(Visio.visSectionProp, i, 0)
ValName = celObj.ResultStr(Visio.visNone)
Set celObj = shpObj.CellsSRC(Visio.visSectionProp, i, 1)
PromptName = celObj.ResultStr(Visio.visNone)
Set celObj = shpObj.CellsSRC(Visio.visSectionProp, i, 2)
LabelName = celObj.ResultStr(Visio.visNone)
Debug.Print shpObj.Name, LabelName, PromptName, ValName
Print #1, shpObj.Name; Tabchr; LabelName; Tabchr; PromptName; Tabchr; ValName
Next i
Next ShpNo
Close #1
End Sub
`CellExistsU`根据[文档](https://msdn.microsoft.com/en-us/vba/visio-vba/articles/shape-cellexistsu-返回一个整数财产的Visio)。你确定它可以作为一个布尔值(0表示为false,非为真)? – jpmc26 2018-02-22 22:30:44