&引用;XLSX文件不存在";使用SAS宏时出错&;Proc Import可同时导入多个.xlsx文件
我有一个sas宏,它使用proc import加载多个.xlsx文件,以前工作得很好。今天,我有更多的.xlsx文件需要加载。所以,我用了同样的宏观观点。但这次它产生了一个问题,无法运行。以下是sas代码:&引用;XLSX文件不存在";使用SAS宏时出错&;Proc Import可同时导入多个.xlsx文件,sas,sas-macro,Sas,Sas Macro,我有一个sas宏,它使用proc import加载多个.xlsx文件,以前工作得很好。今天,我有更多的.xlsx文件需要加载。所以,我用了同样的宏观观点。但这次它产生了一个问题,无法运行。以下是sas代码: *name q3 file path; filename file01 '/home/myname/gcs_coded/Los Angeles_CA_Q3_English_EF.xlsx'; filename file02 '/home/myname/gcs_coded/Los Angele
*name q3 file path;
filename file01 '/home/myname/gcs_coded/Los Angeles_CA_Q3_English_EF.xlsx';
filename file02 '/home/myname/gcs_coded/Los Angeles_CA_Q3_English_Prime.xlsx';
filename file03 '/home/myname/gcs_coded/Los Angeles_CA_Q3_Spanish_ET.xlsx';
filename file04 '/home/myname/gcs_coded/Los Angeles_CA_Q3_Spanish_Prime.xlsx';
%macro load (id=, filename= );
proc import out = &id
datafile = &filename
dbms = xlsx
replace;
sheet = "sheet1";
getnames = yes;
run;
%mend load;
%load (id=q3_01, filename=file01);
下面是erro的信息:
ERROR: XLSX file does not exist -> /FILE01.xlsx
NOTE: The SAS System stopped processing this step because of errors.
NOTE: PROCEDURE IMPORT used (Total process time):
real time 0.00 seconds
cpu time 0.01 seconds
但非常有趣的是,我取出了第二个marco参数,但只是复制了文件链接,如下图所示,它运行良好,这意味着链接正常,文件退出
%macro load (id= );
proc import out = &id
datafile = '/home/myname/gcs_coded/Los Angeles_CA_Q3_English_EF.xlsx'
dbms = xlsx
replace;
sheet = "sheet1";
getnames = yes;
run;
%mend load;
%load (id=q3_01)
让我知道你们的想法。谢谢据我所知,proc import无法识别引用.xlsx文件的fileref。我试着使用fileref导入csv,它成功了,然后是.xls文件,它成功了,但在.xlsx文件中不起作用。因此,要导入fileref,您似乎必须使用文本路径遵循
datafile=
,而不是引用路径的fileref。一种解决方法是将文件名存储到宏变量中,如下所示:
*name q3 file path;
%let file01 = '/home/myname/gcs_coded/Los Angeles_CA_Q3_English_EF.xlsx';
然后,在调用宏(无需更改)时,让filename等于文件的宏变量:
%load (id=q3_01, filename=&file01);