Empleamos LIBNAME con SAS para acceder a Excel. Es un truco con limitaciones y que se tiene que ir mejorando a futuro. Se trata de leer todas las hojas de un libro Excel y pegarlas verticalmente en otra hoja QUE NO DEBE EXISTIR PREVIAMENTE. La macro es la siguiente; no se acompaña de un ejemplo de uso debido a su sencillez:
%macro une_excel(ubicacion, nombre_union);
libname selec "&ubicacion.";
proc sql noprint;
select "SELEC.'" || memname || "'n" into :lista_excel separated by " "
from dictionary.members
where libname = "SELEC";
quit;
data SELEC.&nombre_union.;
set &lista_excel.;
run;
libname selec clear;
%mend;
%une_excel(C:\TEMP\unir_excel2\unidos.xlsx, todas);
Creamos una librería SAS a un libro Excel determinado. Leemos con DICTIONARY las hojas que tiene dicho libro y las unimos en una hoja de ese libro, que será la última. Como buena costumbre, desasignamos la librería con LIBNAME CLEAR. Como se ha indicado antes, tiene limitaciones; por ejemplo, no debe existir la hoja final con la unión. Pero es un buen ejemplo de uso de LIBNAME + Excel y DICTIONARY. Saludos.