这是我copy的代码
%macro ExcelFiles2sas(folder= , subfd= , exclfd= , startrow= );
*;
%local _j _cnt _dsid _i _num _s_ext _s_name _filename _rc;
%let _rc=%qsysfunc(filename(filrf,&folder));
%if &_rc=0 %then
%do;
%let dsid=%sysfunc(dopen(&filrf));
%if &_dsid>0 %then
%do;
%let num=%sysfunc(dnum(&_dsid));
%if & num>0 %then
%do _i=1 %to &_num;
%let _filename=%sysfunc(dread(&_dsid,&_i));
%let _s_name=%scan(&_filename,1,.);
%let s ext=%scan(& filename,2,.);
%if %upcase(&_s_ext)=XLS or%upcase(&_s_ext)=XLSX %then
%do;
Libname excellib excel "&folder\&_filename";
data null;
set sashelp.vstabvw end=last;
where libname="EXCELLIB";
memname=upcase(scan(memname,1,'$'));
call symputx(cats('sheet',n),memname,'L');
if last then call symputx('_cnt',_n_,'L');
run;
Libname excellib clear;
%do _j=1 %to &_cnt;
proc import datafile="&folder\& filename"
out=%cmpres(&_s_name._&&sheet&_j)
dbms=excel replace;
range="&&sheet&_j..$&startrow.:65000";
mixed=yes;
getnames=yes;
run;
%end;
%end;
%else %if %upcase(& s ext)= and &subfd=Y
and %qsysfunc(indexw(&exclfd,&_filename))=0 %then
%do;
%let rc=%sysfunc(dclose(& dsid));
%xlx2sas(folder=&folder\&_filename,subfd=&subfd,
exclfd=&exclfd, startrow=&startrow)
%end;
%end;
%end;
%end;
%let rc=%sysfunc(dclose(&_dsid));
%mend ExcelFiles2sas;
%macro ExcelFiles2sas(folder= , subfd= , exclfd= , startrow= );
*;
%local _j _cnt _dsid _i _num _s_ext _s_name _filename _rc;
%let _rc=%qsysfunc(filename(filrf,&folder));
%if &_rc=0 %then
%do;
%let dsid=%sysfunc(dopen(&filrf));
%if &_dsid>0 %then
%do;
%let num=%sysfunc(dnum(&_dsid));
%if & num>0 %then
%do _i=1 %to &_num;
%let _filename=%sysfunc(dread(&_dsid,&_i));
%let _s_name=%scan(&_filename,1,.);
%let s ext=%scan(& filename,2,.);
%if %upcase(&_s_ext)=XLS or%upcase(&_s_ext)=XLSX %then
%do;
Libname excellib excel "&folder\&_filename";
data null;
set sashelp.vstabvw end=last;
where libname="EXCELLIB";
memname=upcase(scan(memname,1,'$'));
call symputx(cats('sheet',n),memname,'L');
if last then call symputx('_cnt',_n_,'L');
run;
Libname excellib clear;
%do _j=1 %to &_cnt;
proc import datafile="&folder\& filename"
out=%cmpres(&_s_name._&&sheet&_j)
dbms=excel replace;
range="&&sheet&_j..$&startrow.:65000";
mixed=yes;
getnames=yes;
run;
%end;
%end;
%else %if %upcase(& s ext)= and &subfd=Y
and %qsysfunc(indexw(&exclfd,&_filename))=0 %then
%do;
%let rc=%sysfunc(dclose(& dsid));
%xlx2sas(folder=&folder\&_filename,subfd=&subfd,
exclfd=&exclfd, startrow=&startrow)
%end;
%end;
%end;
%end;
%let rc=%sysfunc(dclose(&_dsid));
%mend ExcelFiles2sas;