使用macros将多个sas数据集导出到多个Excel表单中?

我正在查看是否有一个macros可以将多个数据集导出到工作簿中的单独的Excel工作表中。 如果我可以为每个工作簿10张,那将会很棒。

我可以按照以下常用方式来完成,但是我有超过100个数据集要导出:

PROC EXPORT DATA=HAVE; OUTFILE= "S:\MYEXCEL.xlsx" DBMS=EXCEL REPLACE; SHEET="NEW_SHEET"; RUN; 

谢谢!

一般的概念是,你会做这样的事情:

 %macro export_data(file=,data=,sheet=); proc export data=&data. outfile="&file." dbms=excel replace; sheet="&sheet."; run; %mend export_data; 

然后,您需要构build您的导出macros调用,但是你想要的。 获取每个数据集有一行的数据集(在SQL中使用dictionary.tables或在数据步骤中使用sashelp.vtable ),然后解决您想要的表名逻辑以及您需要的工作簿数量。 谷歌数据驱动macros调用更多信息。

如果您拥有“SAS /获得PC文件格式”许可,这个小macros就可以毫不费力地完成:

 %macro SASToExcel(ImportLibrary=, ExportLocation=); ods output members = _Members; proc datasets lib = &ImportLibrary; run; quit; proc sql; select count(Name) into :NumOfDatasets from _Members; select Name into :Dataset1-:Dataset%trim(%left(&NumOfDatasets)) from _Members; quit; %do index = 1 %to &NumOfDatasets; proc export data=&ImportLibrary..&&Dataset&index. outfile="&ExportLocation" dbms=excel replace; sheet="&&Dataset&index"; run; %end; proc datasets; delete _Members; quit; %mend; %SASToExcel(ImportLibrary=raw, ExportLocation = c:\test.xlsx);