Try this. I was unsure whether you wanted to select the text to get the prefix individually or as a selection set. It does the former, but is easily alterable to do the latter.
(defun c:PText ( / *error* sv_lst sv_vals c_doc ss colour_lst t_str lyr l_lst)
(defun *error* ( msg )
(mapcar 'setvar sv_lst sv_vals)
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(if (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*EXIT*")) (princ (strcat "\nAn Error : " msg " occurred.")))
(princ)
);end_*error*_defun
(setq sv_lst (list 'cmdecho 'osmode)
sv_vals (mapcar 'getvar sv_lst)
c_doc (vla-get-activedocument (vlax-get-acad-object))
p_obj (vlax-ename->vla-object (car (entsel "\nSelect Prefix text : ")))
p_str (vlax-get-property p_obj 'textstring)
);end_setq
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(vla-startundomark c_doc)
(mapcar 'setvar sv_lst '(0 0))
(while (setq t_ent (entsel "\nSelect Text to Prefix : "))
(setq t_obj (vlax-ename->vla-object (car t_ent)))
(vlax-put-property t_obj 'textstring (strcat p_str (vlax-get-property t_obj 'textstring)))
);end_while
(mapcar 'setvar sv_lst sv_vals)
(if (and c_doc (= 8 (logand 8 (getvar 'UNDOCTL)))) (vla-endundomark c_doc))
(princ)
);end_defun