Я запускаю программу макросов для анализа набора данных. В конце моего макроса я использовал инструкцию ODS и отчет proc для экспорта моих результатов. Я хочу: каждый раз, когда я запускаю макропрограмму с новым набором данных, результаты будут обновляться на новом листе в том же файле Excel, без удаления листов старых наборов данных или старого файла Excel. Пожалуйста, помогите мне.Обновление вывода Excel с использованием ODS?
ответ
Основной способ приблизиться к этому заключается в том, что основной оператор ods tagsets.excelxp
вне макросов итераций. Затем контролируйте только лист внутри макроса.
Скажем, у вас есть:
%macro run_me(sheet=,sex=);
ods tagsets.excelxp options(sheet_name="&sheet.");
proc print data=sashelp.class;
where sex="&sex.";
run;
%mend run_me;
ods tagsets.excelxp file="c:\temp\test.xml";
%run_me(sheet=Male,sex=M);
%run_me(sheet=Female,sex=F);
ods tagsets.excelxp close;
Вы просто должны быть осторожны с выходом в остальной части анализа; вам может понадобиться использовать ods select
заявления так:
ods tagsets.excelxp select none;
в начале макроса, а затем, когда вы хотите, чтобы снова начать вывод
ods tagsets.excelxp select all;
(Или просто выбрать конкретный вывод, который вы хотите, конечно.)
Спасибо, Джо. Я думаю, мы близки. Но мне интересно, можем ли мы сделать код более автоматическим? Например: В макросе run_me я удалю инструкцию Where и добавлю макро переменную для data_input: run_me (sheet =, data_input =). Затем в следующем объявлении тегов ODS я не хочу вручную вручную вручную запускать% run_me для всех моих наборов данных. Итак, если у меня есть библиотека, содержащая все мои наборы данных, есть ли у SAS функция, которая будет автоматически анализировать все наборы данных в этой библиотеке один за другим? – buiquanghai
Например, если мы можем подсчитать количество наборов данных в библиотеке, тогда вызовите каждый набор данных в этой библиотеке по порядку (1 2 3 4 ...), что позволит нам выполнить цикл. – buiquanghai
Хорошо, я нашел его, я проверяю код, после чего я обновлю вопрос, если я найду ответ. – buiquanghai
возможного интереса: http://support.sas.com/resources/papers/proceedings13/143-2013.pdf – C8H10N4O2
@ C8H10N4O2 Спасибо, но я думаю, что это работает только в том случае, если я запустил все свои инструкции ODS в том же макросе, перед тем как закрыть основные ОРВ. Я хочу обновить файл Excel после закрытия макропрограммы и инструкции ODS. – buiquanghai
@ C8H10N4O2 На странице 2 документа было сказано, что мы не можем использовать методы, описанные в документе, для обновления существующей книги. – buiquanghai