/*数据导出的宏程序*/
/*将某个逻辑库下的所有数据集输出成EXCEL*/
/*libname---逻辑库的名称*/
/*outfile---文件地址*/
/*method----"one"(输出成一个文件不同sheet)、"more"(输出成一个数据集一个文件)*/
/*filename--文件名称(method为"one"的情况下)*/
/*type-----xls或xlsx*/
%macro out_excel(libname,outfile,method,filename,type);
%let libname=%upcase(&libname.);
proc sql noprint;
select memname,count(memname)
into :memlist
separated by '\',:memnum from dictionary.tables where libname="&libname";
quit;
%do i=1 %to &memnum.;
%let name&i.=%scan(&memlist.,&i,\);
%end;
%do i=1 %to &memnum.;
%if &method.="one" %then %do;
proc export data=&libname..&&name&i..
outfile="&outfile.&filename..&type."
dbms=excel replace label;
run;
%end;
%else %if &method.="more" %then %do;
proc export data=&libname..&&name&i..
outfile="&outfile.\&&name&i...&type."
dbms=excel replace label;
run;
%end;
%end;
%mend out_excel;
/*%out_excel(work,C:\Users\Administrator\Desktop\2022SASfile,"more",20220420,xls);*/