Este programa SAS une todos los Excel que queramos en un único libro. Cuando estamos haciendo análisis de variables y exportamos los resultados con ODS o con otro método a Excel, resulta un poco pesado ir abriendo cada libro para ver los resultados; a mí me resulta más fácil unírmelas todas y tener toda la información contenida en un único Excel.
¡Espero que os resulte útil!
/* GENERAMOS FICHEROS DE EJEMPLO */ ods noresults; ods listing close; ods html body="c:\temp\retail.xls"; proc print data=sashelp.retail; run; ods html close; ods html body="c:\temp\shoes.xls"; proc print data=sashelp.shoes; run; ods html close; ods results; ods listing; /* MACRO PARA UNIR LOS FICHEROS EMPLEANDO VBS */ %macro UNE_EXCEL(in=, out=); options noxwait; x erase "&&out"; options xwait; data _null_; file "c:\temp\class.vbs"; put 'Set XL = CreateObject("Excel.Application")' / 'XL.Visible = True'; %let n = 1; %let from = %scan(&&in, &&n, " "); %do %while("&&from" ne ""); %let fromwb = %scan(&&from, 1, "!"); %let fromws = %scan(&&from, 2, "!"); put "XL.Workbooks.Open ""&&fromwb"""; %if &&n = 1 %then put "XL.ActiveWorkbook.SaveAs ""&&out"", -4143" %str(;); %else %do; put "XL.Workbooks(""%scan(&&fromwb, -1, '\')""").Sheets(""&&fromws""").Copy ,XL.Workbooks(""%scan(&&out, -1, '\')""").Sheets(%eval(&&n-1))"; put "XL.Workbooks(""%scan(&&fromwb, -1, '\')""").Close"; %end; %let n = %eval(&&n + 1); %let from = %scan(&&in, &&n, " "); %end; put "XL.Workbooks(""%scan(&&out, -1, '\')""").Sheets(1).Activate"; put "XL.Workbooks(""%scan(&&out, -1, '\')""").Save"; put "XL.Quit"; run; x 'c:\temp\class.vbs'; %mend; /* EJEMPLO DE USO */ %UNE_EXCEL(in=c:\temp\shoes.xls!shoes c:\temp\retail.xls!retail, out=c:\temp\TodasJuntas.xls);