The following is not completely tested. But you can try it and it may be what you are looking for.
Code:
(defun C:DELETEBLOCK (/ SS BNAME FILTER SSLEN ENT)
(while (/= (type BNAME) 'STR)
(cond ((= BNAME NIL)
(setq BNAME (entsel "\nSelect block to remove from the drawing: "))
)
((= (length BNAME) 2)
(setq BNAME (entget (car BNAME)))
)
((= (cdr (assoc 0 BNAME)) "INSERT")
(setq BNAME (cdr (assoc 2 BNAME)))
)
((/= (cdr (assoc 0 BNAME)) "INSERT")
(prompt "\nEntity selected is not a block.")
(setq BNAME (entsel "\nSelect block to remove from the drawing: "))
)
)
)
(setq FILTER (list (cons 0 "INSERT")
(cons 2 BNAME)
)
SS (ssget "_X" FILTER)
)
(if SS
(progn
(vl-load-com)
(repeat (setq SSLEN (sslength SS))
(vlax-invoke-method (vlax-ename->vla-object (ssname ss (setq SSLEN (1- SSLEN)))) 'Delete)
)
)
)
(command "purge" "b" bname "N")
)