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);