Delete OLE Objects from Drawing Sheet and Template Example (VBA)
This example shows how to delete any OLE objects from the current drawing
sheet and template.
'-------------------------------------------
'
' Preconditions:
' (1)
Drawing is open.
' (2)
At least one OLE oject exists in the drawing sheet or template.
'
' Postconditions: All OLE objects existing in drawing
sheet
' and
template are deleted.
'
'-------------------------------------------
Option Explicit
Sub DeleteAllOleItemsInSheet _
( _
swApp
As SldWorks.SldWorks, _
swModel
As SldWorks.ModelDoc2, _
swSheet
As SldWorks.Sheet _
)
Dim
nOleCnt As
Long
Dim
i As
Long
Dim
nSize As
Long
Dim
nAspect As
Long
Dim
skArray() As
Variant
Dim
bRet As
Boolean
nOleCnt
= swSheet.GetOLEObjectCount: If
0 = nOleCnt Then Exit Sub
ReDim
skArray(nOleCnt - 1)
'
Get location of each OLE item
For
i = 0 To nOleCnt - 1
skArray(i)
= swSheet.GetOLEObjectSettings(i,
nSize, nAspect): Debug.Assert Not IsEmpty(skArray(i))
Next
i
'
Delete each OLE items
For
i = 0 To nOleCnt - 1
'
Do not assert because OLE object might be in sheet and OLE object
'
might be in template and cannot be selected
bRet
= swModel.SelectByID("",
"OLEITEM", _
0.5
* (skArray(i)(0) + skArray(i)(3)), _
0.5
* (skArray(i)(1) + skArray(i)(4)), _
0.5
* (skArray(i)(2) + skArray(i)(5)))
'
Do not assert because nothing might be selected
bRet
= swModel.DeleteSelection(False)
Next
i
End Sub
Sub main()
Dim
swApp As
SldWorks.SldWorks
Dim
swModel As
SldWorks.ModelDoc2
Dim
swDraw As
SldWorks.DrawingDoc
Dim
swSheet As
Object
Set
swApp = Application.SldWorks
Set
swModel = swApp.ActiveDoc
Set
swDraw = swModel
Set
swSheet = swDraw.GetCurrentSheet
DeleteAllOleItemsInSheet
swApp, swModel, swSheet
'
Switch to template and delete OLE objects
swDraw.EditTemplate
Set
swSheet = swDraw.GetCurrentSheet
DeleteAllOleItemsInSheet
swApp, swModel, swSheet
swDraw.EditSheet
'
Switch back to sheet and make sure all OLE objects are deleted
Set
swSheet = swDraw.GetCurrentSheet
Debug.Assert
0 = swSheet.GetOLEObjectCount
End Sub
'-------------------------------------------