Lee Mac has a blocks delete LISP which I think you can modify to remove user interaction
https://lee-mac.com/deleteblocks.html for Lee Macs code
Below to remove the block, note the c:blockdelbatch is as an example, removing the block revtriangle (as part of a list that you can add to). You need Lee Macs LISP above.
And then just insert the new block. Can use something like Lee Macs script writer to do the batch processing.
(defun c:blockdelbatch (/ deletelst)
(setq deletelst (list "revtriangle"))
(blksdelbatch deletelst)
)
(defun blksdelbatch ( lst / *error* del lst )
(defun *error* ( msg )
(LM:endundo (LM:acdoc))
(if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
(princ (strcat "\nError: " msg))
)
(princ)
)
(cond
( t
(LM:startundo (LM:acdoc))
(setq del (LM:DeleteBlocks (LM:acdoc) lst))
(vla-regen (LM:acdoc) acallviewports)
(foreach block lst
(if (member (strcase block) del)
(princ (strcat "\nDeleted block " block "."))
(princ (strcat "\nUnable to delete block " block "."))
)
)
(LM:endundo (LM:acdoc))
)
)
(princ)
)
Edit.
Nearly forgot to say, if this is a simple single block, copy the bock to the clipboard and use
(command "pasteclip" "0,0")