Hier mal ein VBA Snippet, dass alle Ballons durchläuft und folgendes in der Konsole ausgibt..
BallonNr + Ballon X-Koordinate + Ballon Y-Koordinate
Zugehörigen Komponentennamen + X/Y-Koordinate Ecke Linksoben + X/Y-Koordinate Ecke Rechtsunten
Alles Koordinaten sind auf das aktuelle Blatt bezogen.

Der Code funktioniert nur solange die Ansicht auf der Zeichnung, die gleiche ist, wie im Modell auf die XZ-Ebene. Da ich "MaxPoint.X" bzw. "MaxPoint.Z" usw. genutzt habe.
Hier die Bilder zur Veranschaulichung was ich meine.
Ansicht auf XZ-Ebene
Gleiche Ansicht auf Zeichnung
Auch wichtig: Die Ballonspitzen müssen auf eine Kante referenzieren.. alles andere wird nicht abgefangen.
Bei automatisch gesetzten Ballons sind es nämlich in der Regel immer Kanten.
Es gäbe noch eine elegantere Möglichkeit:
Jedes DrawingView hat die Methode "ModelToSheetSpace".. damit müsste man weniger selber rechnen und evtl. lässt sich die Thematik mit der XZ-Ebene bzw. Ansicht schön lösen.

Ich hoffe das löst dein Problem bzw. hilft dir bei der Lösungsfindung.
Hier noch der Code..
Private Sub test()
Dim oDoc As DrawingDocument
Set oDoc = ThisApplication.ActiveDocument
Dim oBalloons As Balloons
Set oBalloons = oDoc.ActiveSheet.Balloons
Dim oLeader As Leader
Dim oLeaderNode As LeaderNode
Dim oIntent As GeometryIntent
Dim oCurve As DrawingCurve
Dim oEdgePx As EdgeProxy
Dim oOccurrence As ComponentOccurrence
Dim oBox As Box
Dim dScale As Double
Dim dLiOb(1) As Double
Dim dReUn(1) As Double
Dim dModelToSheet(1) As Double
Dim sBalloon As String
Dim sModel As String
Dim oBalloon As Balloon
For Each oBalloon In oBalloons
Set oLeader = oBalloon.Leader
Set oLeaderNode = oLeader.AllNodes(2)
Set oIntent = oLeaderNode.AttachedEntity
Set oCurve = oIntent.Geometry
Set oEdgePx = oCurve.ModelGeometry
Set oOccurrence = oEdgePx.ContainingOccurrence
Set oBox = oOccurrence.RangeBox
dScale = oBalloon.ParentView.Scale
dLiOb(0) = Round(oBox.MinPoint.X * 10 * dScale, 3)
dLiOb(1) = Round(oBox.MaxPoint.Z * 10 * dScale, 3)
dReUn(0) = Round(oBox.MaxPoint.X * 10 * dScale, 3)
dReUn(1) = Round(oBox.MinPoint.Z * 10 * dScale, 3)
dModelToSheet(0) = Round(oBalloon.ParentView.Position.X * 10, 3)
dModelToSheet(1) = Round(oBalloon.ParentView.Position.Y * 10, 3)
sBalloon = oBalloon.BalloonValueSets.Item(1).ItemNumber & vbTab & Round(oBalloon.Position.X * 10, 3) & " / " & Round(oBalloon.Position.Y * 10, 3)
sModel = oOccurrence.Name & vbTab & "Ecke1: " & dLiOb(0) + dModelToSheet(0) & " / " & dLiOb(1) + dModelToSheet(1) & vbTab & "Ecke2: " & dReUn(0) + dModelToSheet(0) & " / " & dReUn(1) + dModelToSheet(1)
Debug.Print sBalloon
Debug.Print sModel
Next
End Sub
Weitere genutzte Quelle: https://adndevblog.typepad.com/manufacturing/2012/06/use-the-api-to-find-a-component-occurrence-from...
Viel Spaß damit!
Gruß
Aleksandar Krstic
Produkt- und Projektmanager

