Why this approach crashes Microstation on RemoveElement line? The same approach is used in VBA help and it should be ok.
'Convert all elements to cells Sub All2Cells() Dim eE As ElementEnumerator Dim sC As New ElementScanCriteria Dim oCellNew As CellElement Dim eeSub As ElementEnumerator Dim oArr() As Element Dim iNdex As Long Dim rng As Range3d Dim pntOrigin As Point3d sC.ExcludeNonGraphical 'sC.ExcludeType msdElementTypeCellHeader'sC.ExcludeType msdElementTypeSharedCellDefinition'sC.ExcludeType msdElementTypeSharedCell Set eE = ActiveModelReference.Scan(sC) 'Set eE = ActiveModelReference.GetSelectedElements ' Activate this line if only selected objects are to be changed Do While eE.MoveNext iNdex = 0 ReDim oArr(0) If eE.Current.Type <> msdElementTypeCellHeader Or msdElementTypeSharedCell Or msdElementTypeSharedCellDefinition Then rng = eE.Current.Range With rng pntOrigin.X = .High.X - .Low.X pntOrigin.Y = .High.Y - .Low.Y pntOrigin.Z = .High.Z - .Low.Z pntOrigin = Point3dAddScaled(rng.Low, pntOrigin, 0.5) End With ReDim Preserve oArr(iNdex) Set oArr(iNdex) = eE.Current Set oCellNew = CreateCellElement1(vbNullString, oArr, pntOrigin, False) ActiveModelReference.AddElement oCellNew ActiveModelReference.RemoveElement eE.Current End If Loop End Sub