Try this as well (mostly CAB's code):
(defun getvports (/ a b c lst ss to)
(if (setq ss (ssget "x" '((0 . "VIEWPORT"))))
(progn (foreach e (mapcar 'cadr (ssnamex ss))
(setq a (cdr (assoc 330 (entget e)))
b (cdr (assoc 340 (entget a)))
c (cdr (assoc 331 (entget b)))
to (cdr (assoc 71 (entget b)))
)
(or (equal c e) (setq lst (cons (list e to) lst)))
)
)
)
;;Sort the list by taborder L 2 R
(mapcar 'car (vl-sort lst (function (lambda (x y) (< (cadr x) (cadr y))))))
)
(mapcar '(lambda (x) (print (list (cdr (assoc 410 (entget x))) x))) (getvports))