我正在考虑通过excel标记集将数据集的内容导出到excelsheet, 但是,我正在为5个数据集编写代码5次。
我想编写一个宏,它将库中的变量列表连接到数据集列表,这样我就不必多次编写proc内容了。
我写的基本代码是这样的:
ods tagsets.excelxp file="c:\ECT2013_Mappning1.xls" style=statistical
options( skip_space='3,2,0,0,1' sheet_interval='none' sheet_name='Datasets'
suppress_bylines='no');
proc datasets library=work; quit;run;
ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none'
sheet_name='Behtid' suppress_bylines='no');
Proc contents data=behtid varnum;run;
ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none'
sheet_name='Biverk' suppress_bylines='no');
Proc contents data=biverk varnum;run;
ods tagsets.excelxp options( skip_space='3,2,0,0,1' sheet_interval='none'
sheet_name='Dosering' suppress_bylines='no');
ods tagsets.excelxp close;
我想编写一个自动连接数据集的宏,并将带有proc内容的excel标记集执行到库中可用的数据集数量。 我怎么做?
答案 0 :(得分:0)
我们的宏应该可以在有或没有工作簿路径的情况下调用,因此工作簿路径必须是可选的。 Sas宏知道两种类型的参数:位置强制(这里用于表)和名称可选(这里是工作簿)。
%macro excelOds(sheet, workBook=_same_);
ods tagsets.excelxp
options(sheet_name="&sheet."
skip_space='3,2,0,0,1' sheet_interval='none' suppress_bylines='no')
%if &workBook. NE _same_ %then;
&excelOds file="&workBook."
%end;
; %* Do not remove this semicolon: it closes the ods statement;
%mend;
我们第一次包含可选参数,稍后我们不会
%excelOds(Datasets,workBook=c:\ECT2013_Mappning1.xls);
proc datasets library=work; quit;run;
%excelOds(Behtid);
Proc contents data=behtid varnum;run;
** and so further **;
ods tagsets.excelxp close;