The set('PRINTER',2) returns default Windows printer which you cannot change with VFP commnds or functions. The set('PRINTER',3) returns default VFP printer that can be changed with SET PRINTER TO NAME command. BTW, you don't need macro substitution in that case.
SET PRINTER TO NAME (lcDefa)
>I believe you can just use the code:
>
>lcDefa = set('PRINTER',2)
>
>the "2" parameter signifies the default printer.
>
>then restore it by using the code:
>
>SET PRINTER TO NAME &lcDefa
--sb--