我无法让Excel 2010从SAS执行宏。我正在将数据从一些SAS表导出到Excel,这很好,当我手动运行VBA宏时,它也会做它应该做的事,但它不会自动执行。 Excel文件名为“FIH.xls”,宏名为“Opryd”,名为Module1。 SAS日志没有出现任何错误,Excel也没有。我允许所有宏在Excel设置中运行。它仍然没有执行。
options noxwait noxsync;
x '"C:\FIH.xls"';
/* Putting SAS in sleep mode to give Excel the necessary time to open the file */
data _null_; x=sleep(5);
run;
FILENAME excel DDE 'EXCEL|Grp!r5c8:r7c20' notab;
DATA _NULL_;
SET gem.rap_konc_selskab;
FILE excel;
PUT '09'x selskab_rap '09'x gr_vis_start '09'x man_amt '09'x '09'x '09'x rest_2 '09'x ;
RUN;
data _null_;
file excel;
put '[run ("FIH.xls!Opryd")]';
run;
答案 0 :(得分:1)
问题是您put
run(...)
到工作簿本身而不是Excel应用程序。
您需要第二个fileref用于run(...)
命令:
filename cmdexcel dde 'excel|system' ; data _null_; file cmdexcel; put '[run("FIH.xls!Opryd")]'; /* no space between run and ( */ run; filename cmdexcel clear ;
答案 1 :(得分:0)
这个问题似乎很久以前就得到了解决,但这里有一个提示仍然谷歌寻求解决方案的人的好处:
假设文件已打开。
filename xl dde 'excel|system';
data _null_;
file xl;
put %unquote(%str(%'[run("FIH.xlsm!Opryd")]%'));
run;
请注意xlsm扩展名。