4

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

2 回答 2

1

问题是您正在处理工作put簿run(...)本身而不是 Excel 应用程序。

您需要一个用于run(...)命令的第二个文件引用:

文件名 cmdexcel dde ​​'excel|system' ;
数据_null_;
  文件 cmdexcel;
  把'[运行(“FIH.xls!Opryd”)]'; /* run 和 ( */ 之间没有空格
跑;
文件名 cmdexcel clear ;
于 2013-09-23T10:24:53.223 回答
0

似乎这个问题很久以前就已经解决了,但这里有一个提示,以帮助那些仍在谷歌寻求解决方案的人:

假设文件已打开。

filename xl dde 'excel|system';
data _null_;
  file xl;
  put %unquote(%str(%'[run("FIH.xlsm!Opryd")]%'));
run;

请注意 xlsm 扩展名。

于 2018-01-10T10:36:58.693 回答