我给你三组程序,应该可以解决楼主的问题
/* 批量导入多个excel*/
%macro ss/parmbuff;
%let i=1;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC IMPORT OUT=WORK.a&i
DATAFILE= "D:\&dsn..xls"
DBMS=EXCEL REPLACE;
SHEET="Sheet1$";
GETNAMES=yes;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend ss;
options nomlogic nomprint nosymbolgen;
%ss(1,2,book1,shen)
/*批量导出多个excel*/
%macro sss/parmbuff;
%let i=1;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC EXPORT DATA= WORK.&dsn
OUTFILE= "E:\&dsn..xls"
DBMS=EXCEL REPLACE;
SHEET="Sheet";
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend sss;
%sss(test1 test2 test3)
/*特定逻辑库下的所有数据集转化为excel文件*/
%macro sss/parmbuff;
%let i=1;
%let lib=%scan(&syspbuff,&i);
%let i=2;
%let dsn=%scan(&syspbuff,&i);
%put &dsn;
%do %while(&dsn ne);
PROC EXPORT DATA=&lib..&dsn
OUTFILE= "E:\&dsn..xls"
DBMS=EXCEL REPLACE;
SHEET="Sheet";
RUN;
%let i=%eval(&i+1);
%let dsn=%scan(&syspbuff,&i);
%end;
%mend sss;
%macro tt(lib);
proc sql noprint;
select memname into :namelist separated by ' '
from dictionary.tables
where libname=upcase("&lib") and memtype='DATA';
%put &namelist;
quit;
%sss(&lib &namelist)
%mend;
%tt(s)