Я новичок в VBA, и это мое первое задание, включающее уже существующий чертеж Visio.
Чертеж Visio состоит из нескольких фигур, и я в конечном итоге хочу найти способ определить, какие фигуры являются кабелями (две фигуры "соединителя", которые присоединяются динамическим соединителем) с использованием кода vba. Сделать это,
1) Я хочу начать с хранения всех имен фигур в массиве.
2) Затем я хочу провести перекрестную проверку этого массива с известными именами форм соединителей и создать новый массив только этих форм соединителей.
3) Затем я проверил бы, к какой форме подключен каждый разъем, и это позволило бы мне определить, к какому типу кабеля это относится (эта часть кода завершена).
4) Наконец, я бы назначил # кабеля одной из форм разъема (я думаю, у меня есть рабочий код для этого тоже).
Я пытаюсь выяснить, как реализовать шаги 1 и 2 с моим существующим кодом.
В настоящее время я могу обнаруживать связанные фигуры только тогда, когда выбрана одна из этих фигур:
Public Sub ConnectedShapes()
' Get the shapes that are at the other end of
' incoming connections to a selected shape
Dim vsoShape As Visio.Shape
Dim allShapes As Visio.Shapes
Dim lngShapeIDs() As Long
Dim intCount As Integer
If ActiveWindow.Selection.Count = 0 Then
MsgBox ("Please select a shape that has connections.")
Exit Sub
Else
Set vsoShape = ActiveWindow.Selection(1)
End If
Set allShapes = ActiveDocument.Pages.Item(1).Shapes
lngShapeIDs = vsoShape.ConnectedShapes(visConnectedShapesAllNodes, "")
Debug.Print " Shape selected: ";
Debug.Print vsoShape
Debug.Print " Shape(s) connected: ";
For intCount = 0 To UBound(lngShapeIDs)
connectedItem = allShapes.ItemFromID(lngShapeIDs(intCount)).Name
Debug.Print connectedItem
If InStr(1, vsoShape, "USB A - top") = 1 Then
If InStr(1, connectedItem, "USB A Female") = 1 Then
' write cable's number
ElseIf InStr(1, connectedItem, "USB Mini B") = 1 Then
' write cable's number
ElseIf InStr(1, connectedItem, "USB Micro B") = 1 Then
' write cable's number
ElseIf InStr(1, connectedItem, "USB C Male") = 1 Then
' write cable's number
End If
End If
Next
End Sub
Существует ли встроенная функция для Visio vba, которая поможет мне выполнить шаги 1 и 2? Какой самый простой способ найти все фигуры в документе и сохранить их в массиве?