楼主: zhiyong75
8690 6

[原创博文] [原创]还有谁比我这个SAS的DDE更好的? [推广有奖]

  • 0关注
  • 2粉丝

已卖:785份资源

硕士生

97%

还不是VIP/贵宾

-

威望
0
论坛币
2023 个
通用积分
0.1800
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
184 点
帖子
77
精华
0
在线时间
278 小时
注册时间
2006-9-5
最后登录
2017-8-20

楼主
zhiyong75 发表于 2007-1-24 17:14:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有对SAS的MDX感兴趣的,可以联系我:nkwill@hotmail.com.初学者勿打扰.
/**************************************
*
*此程序实现对多个数据集输入到一个EXCEL工作簿中,
*唯一遗憾的是SHEET排序为倒序
*
********************************************/
OPTION SYMBOLGEN;
DATA A;
DO I=1 TO 100;
OUTPUT;
END;
RUN;
DATA B;
DO I=101 TO 500;
OUTPUT;
END;
RUN;
DATA C;
DO I=10 TO 500;
OUTPUT;
END;
RUN;
DATA D;
DO I=20 TO 500;
OUTPUT;
END;
RUN;
/**********以下程序实现将一个或者两个SAS数据集运用DDE输出到同一个EXCEL工作簿不同工作表中*/
options noxsync noxwait xmin;
filename sas2xl dde 'excel|system';
%let tab='09'x;
%MACRO TIME;
data _null_;
length fid rc start stop time 8;
fid=fopen('sas2xl','s');  /*此处fid=0,因为并没有start excel*/
if (fid le 0) then do;
rc=system('start excel');  /*启动excel,并保持10秒,以便EXCEL宏有足够的时间控制来自SAS程序的EXCEL宏参数*/
start=datetime();
stop=start+10;
do while (fid le 0);
fid=fopen('sas2xl','s');
time=datetime();
if (time ge stop) then fid=1;
end;
end;
rc=fclose(fid);
run;
%mend;
%MACRO XLM;
data _null_;/*插入一个宏insert(3)*/
file sas2xl;
put '[workbook.next()]';
put '[workbook.insert(3)]';
run;
filename xlmacro dde 'excel|macro1!r1c1:r100c1' notab ;
data _null_;
file xlmacro;
put '=workbook.name("sheet1","第一")';
put '=workbook.name("sheet2","第二")';
put '=workbook.name("sheet3","第三")';
put '=workbook.name("sheet4","第四")';
put '=halt(true)';
put '!dde_flush';
file sas2xl;
put '[run("macro1!r1c1")]'
;
run;
filename xlmacro clear;
%MEND XLM;
%MACRO SHEET(N);

filename recrange dde "excel|[tt.xls]sheet&N!r4c1:r65000c1" notab;
data _null_; /***写入第一个数据集*/
set &&D&N;
file recrange;
put I
;
run;
filename recrange clear;
filename recrange dde "excel|[tt.xls]sheet&N!r3c1:r3c1" notab;
data _null_; /*写入标签值*/
file recrange;
put '手机号码'
;
run;
filename recrange clear;

data _null_; /*制作列宽,3表示自动按原字段值调整*/
   file sas2xl;
   put '[column.width(0,"c1:c1",false,3)]';
run;
data _null_;

file sas2xl;
put '[workbook.insert(1)]';

run;
%MEND SHEET;

%MACRO DDE1(d1,d2,d3,d4);
%TIME
data _null_;   /*创建一个新工作簿;并删除原有的缺省值3张表;建立一个新表并保存*/
file sas2xl;
put '[file.close(false)]';
put '[new(1)]';
put '[error(false)]';
put '[save.as("D:\tt")]';
run;
%SHEET(1)
%SHEET(2)
%SHEET(3)
%SHEET(4)

%XLM

data _null_;
file sas2xl;
put '[workbook.delete("macro1")]';
put '[save]';                      /*保存数据集*/
put '[file.close(false)]';        /*关闭文件*/
put '[quit]';                    /*退出EXCEL程序*/
run;

%MEND DDE1;
%DDE1(A,B,C,D);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sas的 DDE workbook filename datetime system 工作表 excel 初学者 EXCEL

沙发
zhiyong75 发表于 2007-1-24 17:16:00
大家可以直接COPY代码到本机运行即可.如有疑问可回复.

藤椅
yxj985211 发表于 2011-3-24 11:21:08
可否发一本介绍SAS DDE的资料!yangxujia3.14@163.com  , 不胜感激!
签名被屏蔽

板凳
yugao1986 发表于 2011-3-24 13:00:17
1# zhiyong75 帮助斑竹顶顶贴。
围观大牛,期待其他精彩的跟帖。
三人行必有我师

报纸
yugao1986 发表于 2011-3-24 21:51:47
4# yugao1986 看来沉下去的趋势很明显。
三人行必有我师

地板
sanbao85110 发表于 2013-12-20 17:44:49
运行没有成功 还望指点啊 filename recrange dde "excel|[tt.xls]sheet&N!r4c1:r65000c1" notab;感觉这块写的有问题  总是说找不到物理路径

7
sanbao85110 发表于 2013-12-25 11:08:46
sanbao85110 发表于 2013-12-20 17:44
运行没有成功 还望指点啊 filename recrange dde "excel|[tt.xls]sheet&N!r4c1:r65000c1" notab;感觉这块写 ...
终于运行成功了,我的excel是2010的,所以tt.xls为tt.xlsx.  还有我的excel中显示的宏名字是  宏1,  不是macro1  ,所以要把程序中的macro1  改为宏1。还是对与里边的一些语句不太明白,比如 %MACRO XLM; 希望能给一些资料学习一下  谢谢。邮箱 sanbao85110@126.com    不胜感激!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 23:21