Как получить информацию о пользовательских формах Visio с помощью VBA - PullRequest
5 голосов
/ 03 февраля 2009

Как использовать VBA, как получить информацию о пользовательских формах из диаграммы Visio 2003.

Ответы [ 2 ]

6 голосов
/ 03 февраля 2009

Чтобы получить пользовательскую информацию о форме из формы 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)
3 голосов
/ 09 октября 2010

Нашел это, в 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
...