Another method:
(defun c:vpon ( / d s )
(vl-load-com)
(if (setq s (ssget "_+.:S:E:L" '((0 . "VIEWPORT"))))
(progn
(setq d (vla-get-activedocument (vlax-get-acad-object)))
(vla-put-mspace d :vlax-true)
(vla-put-activeviewport d (vlax-ename->vla-object (ssname s 0)))
)
)
(princ)
)
And to 'deactivate':
(defun c:vpoff ( )
(vla-put-mspace (vla-get-activedocument (vlax-get-acad-object)) :vlax-false)
(princ)
)