Vba 获取连接器的层

Vba 获取连接器的层,vba,visio,visio-2010,Vba,Visio,Visio 2010,我可以在vba中获取连接器指定给的图层的名称吗 我用这样的形状做这个 ActivePage.Shapes(1).layer(1) 现在,我正在寻找类似的东西,只是连接器。我不完全清楚您的问题,但连接器没有什么特别之处——它们仍然只是形状。因此,如果您知道目标形状和层的索引,则可以使用上面的代码 Visio中的形状也可以属于多个层(层的工作方式与Photoshop不同),因此您可能需要先获取层数,然后再遍历每个层。例如: Sub CheckLayers() Dim shp As Visi

我可以在vba中获取连接器指定给的图层的名称吗

我用这样的形状做这个

ActivePage.Shapes(1).layer(1)

现在,我正在寻找类似的东西,只是连接器。

我不完全清楚您的问题,但连接器没有什么特别之处——它们仍然只是形状。因此,如果您知道目标形状和层的索引,则可以使用上面的代码

Visio中的形状也可以属于多个层(层的工作方式与Photoshop不同),因此您可能需要先获取层数,然后再遍历每个层。例如:

Sub CheckLayers()
    Dim shp As Visio.Shape
    Dim i As Integer
    For Each shp In ActivePage.Shapes
        Debug.Print shp.NameU
        For i = 1 To shp.LayerCount
            Debug.Print "  " & shp.Layer(i).Name
        Next i
        Debug.Print ""
    Next shp
End Sub
此外,根据您尝试执行的操作,您可能希望利用返回基于特定层上的形状的选择。下面是Visio SDK的一个稍加修改的版本:

Public Sub CreateSelection_Layer_Example()

 Dim vsoLayer As Visio.Layer
 Dim vsoSelection As Visio.Selection

 Set vsoLayer = ActivePage.Layers.ItemU("Connector")
 Set vsoSelection = ActivePage.CreateSelection(visSelTypeByLayer, visSelModeSkipSuper, vsoLayer)

 'Note that you don't have to pass the selection object to
 'the ActiveWindow Selection property - you can just work
 'with it directly if you want to
 Application.ActiveWindow.Selection = vsoSelection

End Sub
如果您使用的是动态连接器,则会自动将其指定给名为“连接器”的层