Использование макропеременной 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 "ed_file;
x "ed_file;
run;
рТ