¿Cómo recupero Visio información de forma personalizada con VBA
-
21-08-2019 - |
Pregunta
El uso de VBA, ¿Cómo recupero forma personalizada de información de un diagrama de Visio 2003.
Solución
Para obtener información personalizada forma a partir de una forma de 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
Todo lo que hace esta función es utiliza la propiedad cellsu en una forma de conseguir la celda ShapeSheet propiedad personalizada por nombre ...
Si usted es un purista acerca del uso de la hoja de vida de error siguiente, puede comprobar para ver si existe la célula por primera comprobar si existe la celda:
if TheShape.CellExistsU( "Prop." & ThePropertyName , 0 ) then
GetCustomPropertyValue = TheShape.CellsU("Prop." & THePropertyName).ResultStr(VisNone)
Otros consejos
Encontrados esto, en http://visio.mvps.org/VBA.htm (Propiedades personalizadas)
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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow