DDE SAS运行VBA代码

时间:2013-09-23 07:19:00

标签: excel vba excel-vba sas dde

我无法让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;

2 个答案:

答案 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扩展名。