i didn't finish reading the posts in the threads that Alan listed, but it appears to me the lisp commands in those posts are used for replacing block "A" with block "B" which is already in the drawing. and the problem sezbw is trying to solve is different.
don't quote me on this: suppose he has a block named "A" in drawing, and he has another drawing named "A.dwg" which is the new block he wants to replace the old one with. when manually inserting the block (type command "INSERT" and browse that "A.dwg" file), user will be prompted whether to replace the old block definition in drawing or not. but if the block is inserted via lisp, the old block definition will be used.
if what i said above was correct, one way to resolve it would be renaming the old block (to some unique name) in drawing first, inserting the new block, deleting the old block and purging the block definition with the "unique name". this seems to be a good opportunity to use objectDbx.