Truco SAS. Unir todos los Excel en uno sólo

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 mi me resulta más facil unirmelas todas y tener toda la información contenida en un único Excel.

Espero que os resulte útil!

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;
%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;
%UNE_EXCEL(in= c:\temp\shoes.xls!shoes c:\temp\retail.xls!retail,
out=c:\temp\TodasJuntas.xls);