Macros SAS-如何从现有表中的信息导入数据

Macros SAS-如何从现有表中的信息导入数据,macros,import,sas,Macros,Import,Sas,我每个月都需要将几个文件导入到一个库中,我想通过创建一个包含所有文件信息(路径、名称、工作表、类型)的.csv并使用宏来循环和导入信息,可以简化这一过程;然而,当我给它传递一个宏变量时,它不喜欢它。如果我只是把信息放在那里,proc导入就可以正常工作。我环顾四周,发现宏的编译方式与proc语句不同;但我拒绝相信我必须写出30条proc导入语句才能将这些文件导入。从.csv进行管理会容易得多。请看一看并提出你的建议。 谢谢 我不知道您的工作表列中有什么内容,但从以下陈述中可以看出: call sy

我每个月都需要将几个文件导入到一个库中,我想通过创建一个包含所有文件信息(路径、名称、工作表、类型)的.csv并使用宏来循环和导入信息,可以简化这一过程;然而,当我给它传递一个宏变量时,它不喜欢它。如果我只是把信息放在那里,proc导入就可以正常工作。我环顾四周,发现宏的编译方式与proc语句不同;但我拒绝相信我必须写出30条proc导入语句才能将这些文件导入。从.csv进行管理会容易得多。请看一看并提出你的建议。 谢谢


我不知道您的工作表列中有什么内容,但从以下陈述中可以看出:

call symput('sheet',trim(Worksheet)||'$');
我可以猜它是不带引号的字符串,而PROC IMPORT中的RANGE选项需要带引号的字符串:

RANGE=&sheet;
请考虑将工作表括在双引号中(&W)。如果找不到指定的范围,PROC IMPORT可能会抛出一些有趣的错误


[EDIT]p.S.这是一个经典的例子,调用执行会更方便。

非常感谢@Anton!你的编辑笔记和关于引文的评论让我震惊。就像在一个Execute中,我只是将要执行的字符传递给我,我需要在它们周围包含“'”。我调整了我的symput,现在一切都好了:调用symput('loc',““| | trim(FLELocation)| | trim(FLEname)| | trim(fletype)|“”);抱歉,我是新来的,不知道如何在回复中获取代码格式。但我相信你帮了我的忙。另外,我的.csv文件中的所有内容都用引号括起来,所以我不知道为什么我需要全部修剪,但它以前给了我空间。
RANGE=&sheet;