Использование макропеременной SAS в выходном пути DDE

У меня есть кусок кода в SAS, который выводит в Excel с использованием DDE и работает нормально. Сейчас я пытаюсь сделать его немного более динамичным, но я не могу понять, как записать строку пути (2. line) в файл Excel.

options noxwait noxsync;

x '"c:\Folder\excelfile_&date_yyyymmdd\Holding\Holding.xls'";
/* Putting SAS in sleep mode to give Excel the necessary time to open the file */
data _null_; x=sleep(5);
run;
FILENAME TEST DDE "EXCEL|SV01-01!r8c2:r20000c29" notab;
    DATA _NULL_;
   SET le_hk3;

Он отлично работает, когда я заменяю макропеременную на ее значение, и, кажется, она также разрешается правильно, но все равно не открывает файл. Журнал говорит, что файл не существует. Я пытался использовать двойные кавычки, двойные и тройные точки "..xls" в различных комбинациях, но это все равно не работает.

1 ответ

Решение

SAS не заменяет макропеременные внутри одинарных кавычек. Также вам нужно указать конец или имя макропеременной с помощью точки. Например, я не могу сказать, является ли ваша макропеременная &date_yyyymmdd или & date. Предполагая первое:

x "" "c: \ Folder \ excelfile_ &date_yyyymmdd. \ Holding \ Holding.xls" "";

Я предпочитаю создавать полное имя как отдельную переменную макроса, чтобы я мог проверить это:

/* double quotes are included if specified a macro variable */
%let quoted_file = "c:\Folder\excelfile_&date_yyyymmdd.\Holding\Holding.xls";

data _null_;
put &quoted_file;
x &quoted_file;

run;

рТ

Другие вопросы по тегам