以下是一个示例VBA代码,可以导出Visio中所有框内的文字,并按照连线顺序排列:

Sub ExportTextByConnectionOrder()

    Dim vsoPage As Visio.Page
    Set vsoPage = ActivePage
    
    Dim vsoShapes As Visio.Shapes
    Set vsoShapes = vsoPage.Shapes
    
    Dim vsoConnectors As Visio.Shapes
    Set vsoConnectors = vsoPage.Shapes.SelectAll(Type:=visTypeConnector)
    
    Dim vsoConnectedShapes As Visio.Shapes
    Set vsoConnectedShapes = vsoConnectors.ConnectedShapes(visConnectedShapesAllNodes, visConnectedShapesIncomingNodes)
    
    Dim vsoText As Visio.Shape
    Dim vsoTexts As Collection
    Set vsoTexts = New Collection
    
    Dim vsoShape As Visio.Shape
    For Each vsoShape In vsoConnectedShapes
        If vsoShape.Type = visTypeShape Then
            Set vsoText = vsoShape.Shapes.Item(1)
            vsoTexts.Add vsoText.Text
        End If
    Next vsoShape
    
    Dim i As Integer
    Dim strOutput As String
    For i = 1 To vsoTexts.Count
        strOutput = strOutput & vsoTexts.Item(i) & vbCrLf
    Next i
    
    Debug.Print strOutput
    
End Sub

该代码首先获取当前活动页面和页面中的所有形状和连接器。然后,它筛选出所有连接器连接的形状,并从每个形状中提取第一个子形状中的文本。最后,它将所有文本按照连接器顺序排列,并输出到调试窗口中。

请注意,该代码只提取每个形状的第一个子形状中的文本。如果您需要提取所有子形状中的文本,请使用适当的循环来遍历每个形状的所有子形状。

通过vba导出visio中的所有框内文字同时按照连线顺序排列

原文地址: http://www.cveoy.top/t/topic/bHZ7 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录