通过vba导出visio中的所有框内文字同时按照连线顺序排列
以下是一个示例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
该代码首先获取当前活动页面和页面中的所有形状和连接器。然后,它筛选出所有连接器连接的形状,并从每个形状中提取第一个子形状中的文本。最后,它将所有文本按照连接器顺序排列,并输出到调试窗口中。
请注意,该代码只提取每个形状的第一个子形状中的文本。如果您需要提取所有子形状中的文本,请使用适当的循环来遍历每个形状的所有子形状。

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