Ah, go on, if you are quoting Lee Mac, I'll see your nested burst and raise you Copy Swap Text (CTX), (http://lee-mac.com/copytext.html)
RTN from this function (defun copyswaptext:getselection ( msg ini / rtn sel str tmp ) returns the selected entity name and the text value - what the inputs are can be found in the rest of the code.
CTX is one of my favourite functions, tried making up similar but it was never quite as good as his - well worth having in your LISP library