SAS 通过 DDE 将数据放入 Excel

SAS put data to Excel via DDE

我想通过 DDE 将一些数据写入 Excel 并具有以下代码:

option noxwait noxsync;
x call "C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE";

%let delay=5;
data _null_;
    rc=sleep(&delay); 
run;

filename random dde 'excel|Tabelle1!r1c1:r100c3';
data _null_;
    set sashelp.class;
    file random;
    put name sex age;
run;

Excel 成功打开,但 sheet 仍然是空的。日志告诉我有 19 条记录被写入文件 RANDOM.

为什么数据没有写入我的 Excel sheet 有什么建议吗?它可以与我在 Excel 中的语言设置(德语)相关联吗?

NOXSYNC 在这里是一个错误。

基本上,当我 运行 时发生的事情至少是如果设置了 NOXSYNC 它将不起作用,因为它试图写入 excel sheet 在 Excel 准备好之前。您需要 XSYNC 让 SAS 等待 X 命令完成。

如果XSYNC是您无法处理的问题,那么您将需要添加一个手动延迟。

我还会确认您在 运行 之前没有打开 Excel,就好像您这样做可能是在写入与 Excel 不同的工作簿一个正在打开。

我这边的一个非常疯狂的故事:当我将我的语言设置从德语更改为英语时,显示的代码可以正常工作。

更新: 它也适用于德语设置,但是我必须翻译所有语句,例如写入范围:

英语Excel

filename random dde 'excel|Sheet1!r1c1:r100c3';

德语 Excel 使用 z(eile) 和 s(palte) 而不是 r(ow) 和 c(olumn)

filename random dde 'excel|Tabelle1!z1s1:z100s3';