0
我需要每月将多个文件导入到库中,并认为我可以通过创建带有所有文件信息(路径,名称,工作表,类型)并使用宏循环并引入信息;但是当我将它传递给一个宏变量时它不喜欢它。如果我只是把信息放在那里,proc导入就可以正常工作。我环顾四周,看到宏的编译与proc语句不同,但我拒绝相信为了获取这些文件,我必须写出30个proc import语句。从.csv管理起来要容易得多。请看看并提供建议。 谢谢!SAS - 如何从现有表格中的信息导入数据
PROC IMPORT OUT= FileInfo
DATAFILE= 'C:\folder'
DBMS=CSV REPLACE;
GETNAMES=YES;
DATAROW=2;
RUN;
%Macro BringIt();
DATA _NULL_;
IF 0 THEN SET FileInfo NOBS=X;
CALL SYMPUT('RCRDS',X);
STOP;
RUN;
%Do i=1 %to &RCRDS;
data _null_;
set FileInfo (firstobs=&i);
call symput('Fname',FLEname);
call symput('Ftype',FLEtype);
call symput('sheet',trim(Worksheet)||'$');
call symput('Slib',SASlib);
call symput('Sname',SASname);
call symput('loc',FLELocation||'\'||FLEname||fletype);
stop;
run;
*if &Ftype='.xlsx' then
do;
PROC IMPORT OUT=&sname
DATAFILE=&loc
DBMS=EXCEL REPLACE;
RANGE=&sheet;
GETNAMES=YES;
MIXED=NO;
SCANTEXT=YES;
USEDATE=YES;
SCANTIME=YES;
RUN;
*end;
/*end*/
%end;
%mend BringIt;
%BringIt();
run;
谢谢ton @Anton!你的编辑笔记和关于报价的评论做了一个让我震惊的伎俩。像在一个执行我只是传递字符执行到我需要包括他们周围的“'”。我调整了我的symputs,现在一切都很好: call symput('loc',''“|| trim(FLELocation)||'\'|| trim(FLEname)|| trim(fletype)||”'“) ; – RedMosquito
抱歉,我是新来的,无法弄清楚如何在回复中获取代码格式。但是我会因为帮助我而信任你。另外,我的.csv文件包含引号中的所有内容,所以我不知道为什么我需要修剪它,但它之前给了我空间。 – RedMosquito