You know, I somehow thought that's what you meant and I almost answered it that way, but ya never know.... ;-)
A1a: (setvar "ctab" "layoutname")
A1b: (vla-put-activelayout doc (vla-item (vla-get-layouts doc) "layoutname")) where "doc" = (vla-get-activedocument (vlax-get-acad-object))
But note that a LOT of things can be done via vla-* functions so that actually changing the ctab (which often causes a regen) is not always necessary.
A2: You can't......see my other response. You could do something like this though:
(defun gettabs (/ count num#)
(setq count 0)
(textscr)
(foreach lay (layoutlist)
(princ "\n")
(princ (cons count lay))
(setq count (1+ count))
)
(setq num# (getstring "\nEnter number(s) of layouts to use (use commas to seperate multiples): ")) (graphscr) num# )
Then use the response to manipulate the tabs. For instance, the user selected "0":
(setq seltab (gettabs))
(cond ((and (< (strlen (seltab)) 3)(not (wcmatch seltab "*`,*"))) (setq lay (nth (itoa seltab) (layoutlist)))) (other conditions.....)
)
The one condition shown will set the var "lay" to the layout name of the chosen layout when the user enters any number from 0 to 999, not that that many tabs can be in any drawing..... So, that could get you started....then again, it could just confuse you more..... <;-)
Happy Holidays,
Jeff