Sub Test() Dim s As Shape Dim spath As SubPath Dim n1 As Node, n2 As Node Dim Joined As Boolean, Repeat As Boolean Set s = ActiveShape If s.Type <> cdrCurveShape Then s.ConvertToCurves Repeat = True While Repeat Set n1 = Nothing Set n2 = Nothing Joined = False For Each spath In s.Curve.Subpaths If Not spath.Closed Then If n2 Is Nothing Then ' The first open SubPath found Set n1 = spath.StartNode Set n2 = spath.EndNode Else ' n2 is the last node of previous open SubPath ' Join it with the first node of the current subpath n2.ConnectWith spath.StartNode ' Joining subpaths reduces the number of subpath in the curve ' So we need to restart Joined = True Exit For End If End If Next spath If Not Joined Then If Not n1 Is Nothing Then ' There's only one open subpath left. Close it n1.ConnectWith n2 End If Repeat = False End If Wend End Sub