- %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=%qsysfunc(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,'
- 但我输入如下代码后,出现报错:
- %ExcelFiles2sas(folder=E:\11.9\sas\data, subfd=N , exclfd=N, startrow=1);
- -
- 180
- WARNING: 没有解析宏 EXCELFILES2SAS 的调用。
- ERROR 180-322: 语句无效或未按正确顺序使用。
- 请各位大佬帮忙解释一下,是什么地方出问题。
- 万分感谢!
- ));
- 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..[ DISCUZ_CODE_2 ]amp;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;
但我输入如下代码后,出现报错:
%ExcelFiles2sas(folder=E:\11.9\sas\data, subfd=N , exclfd=N, startrow=1);
-
180
WARNING: 没有解析宏 EXCELFILES2SAS 的调用。
ERROR 180-322: 语句无效或未按正确顺序使用。
请各位大佬帮忙解释一下,是什么地方出问题。
万分感谢!