楼主: zhiyong75
2383 2

[原创]还有谁比我这个DDE更简单实用的?! [推广有奖]

  • 0关注
  • 1粉丝

硕士生

97%

还不是VIP/贵宾

-

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

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

以下为个人自创,有对SAS爱好者可联系: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);

二维码

扫码加我 拉你入群

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

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

关键词:DDE workbook filename datetime noxwait DDE 原创

沙发
冀京四海 发表于 2007-1-24 17:04:00 |只看作者 |坛友微信交流群

该成这样:

put '=workbook.name("sheet4","第一")';
put '=workbook.name("sheet3","第二")';
put '=workbook.name("sheet2","第三")';
put '=workbook.name("sheet1","第四")';

会好那么一点,偶没仔细看你这个程序~~~哈哈

使用道具

藤椅
danzhijun512 发表于 2007-6-8 11:37:00 |只看作者 |坛友微信交流群
我还不会,赞楼主一个!

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 03:39