【发布时间】:2016-12-07 08:57:32
【问题描述】:
有没有办法使用宏动态更改 SAS ODS 中的工作表名称?在宏中,我有以下代码:
%DO N = 1 %TO &SQLOBS;
ODS TAGSETS.ExcelXP
OPTIONS(SHEET_NAME = &&TABLEVAR&N
EMBEDDED_TITLES = 'NO'
EMBEDDED_FOOTNOTES = 'NO'
PRINT_HEADER = 'CURRENT &&TABLEVAR&N AS OF &D';
PROC PRINT
DATA = WORK.&&TABLEVAR&N
NOOBS;
RUN;
%END;
这基本上循环通过一组表名,并为每个表输出一个单独的 Excel 表。并且通过调用宏变量 &TABLEVAR,它应该动态地更改每个表的工作表名称。但是,我收到以下错误:
错误 22-322:需要一个带引号的字符串。
所以 SAS 确实解析了宏变量,我可以在日志中看到表名是正确的,但问题是它们不是带引号的字符串。所以我尝试了这样的方法,并在其周围加上引号:
OPTIONS(SHEET_NAME = '&&TABLEVAR&N'
但随后 SAS 未解析宏变量,所有工作表都命名为 &&TABLEVAR&1、2 等。
有没有办法解决这个问题? (而且每张工作表都是一个名称不同的单独表格,所以我不能使用 BY 组。)如果它们不能与 ODS 交互,那么有什么好的宏?
【问题讨论】:
标签: excel macros sas proc sas-macro