首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写PC SAS DDE服务器代码以与Windows 10 Excel 2016通信

如何编写PC SAS DDE服务器代码以与Windows 10 Excel 2016通信
EN

Stack Overflow用户
提问于 2018-08-30 00:25:44
回答 1查看 97关注 0票数 0

我在装有Excel 2010和PC SAS 9.4的Windows7中设置了PC SAS代码。基本上,代码所做的就是将数据集'wide2‘粘贴到当时在操作系统中打开的唯一excel文件中,然后保存它。下面是我使用的代码:

代码语言:javascript
复制
%macro paste(number);


proc print data=wide2;
run;

PROC CONTENTS DATA=wide2 /*NOPRINT*/ OUT=CNT ;
RUN;
PROC SORT DATA=CNT ;
BY VARNUM ;
RUN;


PROC SQL /*NOPRINT*/;
SELECT NAME
INTO: VARS SEPARATED BY ' '
FROM CNT ;
SELECT COUNT(DISTINCT NAME)
INTO: COLS SEPARATED BY ' '
FROM CNT ;
SELECT NOBS
INTO: ROWS
FROM CNT
WHERE VARNUM = 1;
QUIT;



proc print data=cnt;run;


FILENAME TEMP DDE "EXCEL|Sheet&number.!R1C1:R200C200" ;


data _null_ ;
  file temp ;
  if _n_=1 then do;
    do _n_=1 to &cols ;
      set cnt(keep=name rename=(name=__name__)) ;
      put __name__ @;
    end;
    put;
  end;
  set wide2 ;
  put &vars ;
run ;
%mend paste;

因此,当我执行% paste (1)这样的宏时,它会将数据粘贴到Excel的Sheet1中。

现在,我们已经迁移到Windows 10,它具有相同的PC SAS版本,但Excel 2016。当我使用相同的数据集运行相同的代码时,PC SAS在几秒钟后挂起了一段时间,然后我不得不终止该进程。打开的excel文件没有任何变化。我甚至看不到日志,因为PC SAS挂起了。请为此提出解决方案。( PCSAS挂起时,顶部栏显示“运行数据步骤”)

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 04:43:32

wide2数据集中有多少列和行?您发布的代码在我使用SAS 9.4M4和Office 365的系统上运行。我使用了这个数据集。

代码语言:javascript
复制
data wide2;
  do id=1 to 3;
    array x(15) (1:15);
    output;
  end;
  format _numeric_ 2.;
run;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52082129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档