Replace mit VBA ueber Join

Hier eine 2. Möglichkeit um ein Replace über VBA durchzuführen

Vorteile: schneller und sicherer als die erste Variante (man muss nicht ueber API und Fenstergehen)

Nachteil: nur joinfähige Elemente, also z.B. keine Punkte oder Planes, können replaced werden; exklusive Eltern können nicht automatisch gelöscht werden

folgende Procedur in ein öffentliches Modul einfügen
Der Aufruf benötigt 2 Parameter:
1. MyJoinToRefresh [Join] – Join dessen Inhalt replaced werden soll
2. MyJoinNewInput [Join] – inhalt diese Joins wird im 1. Join eingefügt

Sub JoinInhaltReplace(MyJoinToRefresh As HybridShapeAssemble, MyJoinNewInput As HybridShapeAssemble)
        
    Dim JoinElement As Reference
        
    ' alte Elemente loeschen
    For i = 1 To MyJoinToRefresh.GetElementsSize 'To Anzahl der Elemente im Join
        MyJoinToRefresh.RemoveElement 1
    Next

    ' neue Elemente auslesen und zum alten Join hinzufuegen
    For i = 1 To MyJoinNewInput.GetElementsSize
        Set JoinElement = MyJoinNewInput.GetElement(i)
        MyJoinToRefresh.AddElement JoinElement
    Next
    
    MyPart.UpdateObject MyJoinToRefresh 'update
    
    ' MyJoinNewInput mit neuem Inhalt loeschen
    Set ObjektReferenz = MyPart.CreateReferenceFromObject(MyJoinNewInput)
    MyHybShapeFactory.DeleteObjectForDatum MyJoinNewInput

End Sub

Beispiel zum Aufruf der Procedur:

JoinInhaltReplace MyJoin, MyJoin2