Yes, that would work for objects residing in Modelspace.
Though, as Stefan has noted above, be aware that the program will error with objects which do not meet the criteria for a region, so you may wish to include some error trapping to either prevent the user from selecting invalid objects, or a vl-catch-all-apply expression as used by Stefan to catch the error should an invalid object be selected.
For objects residing in any space, consider the following method:
(defun c:reg ( / doc ent obj )
(if (setq ent (car (entsel)))
(progn
(setq obj (vlax-ename->vla-object ent)
doc (vla-get-activedocument (vlax-get-acad-object))
)
(vlax-invoke
(if (vlax-method-applicable-p doc 'objectidtoobject32)
(vla-objectidtoobject32 doc (vla-get-ownerid32 obj))
(vla-objectidtoobject doc (vla-get-ownerid obj))
)
'addregion (list obj)
)
)
)
(princ)
)
(vl-load-com)