SAS中文论坛

标题: 如何将SAS的DATA导入EXCEL合并单元格 [打印本页]

作者: shiyiming    时间: 2008-12-19 01:06
标题: 如何将SAS的DATA导入EXCEL合并单元格
一个问题:用DDE怎么把SAS的数据导入EXCEL 合并单元格中
实在解决不了,请帮忙
作者: shiyiming    时间: 2008-12-19 07:45
标题: Re: 如何将SAS的DATA导入EXCEL合并单元格
[code:12t57irm]
/*
reference: http://www2.sas.com/proceedings/sugi30/045-30.pdf
*/
options noxwait noxsync;
data _null_;
        rc = system('start excel');
        rc = sleep(2);
run;

filename myxls DDE 'EXCEL|System' notab;

data _null_;
        file myxls;
        put '[app.activate("microsoft excel - book1")]';
        put '[workbook.activate("Sheet1")]';
        put '[select("r3c2:r7c3")]';
        put '[send.keys("^1", true)]'
                '[send.keys("a", true)]'
                '[send.keys("%m", true)]'
                '[send.keys("{RETURN}", true)]';
        put '[alignment(7,1,2,0)]';
        put 'DDE is not funny at all!';
run;
quit;
[/code:12t57irm]
献丑了!实在找不到MERGE CELLS的MACRO函数,只好用SEND.KEYS()方法,但不是每次都行。应该有更牢靠的办法。

也可以先在EXCEL录一个宏(with name macro1)专门合并当前选中的单元格,然后再从SAS里调这个宏。
[code:12t57irm]
options noxwait noxsync;
data _null_;
        rc = system('start excel');
        rc = sleep(2);
run;

filename myxls DDE 'EXCEL|System' notab;

data _null_;
        file myxls;
        put '[close()]';
        put '[open("whatever.xls")]';
        put '[workbook.activate("Sheet1")]';
        put '[select("r3c2:r7c3")]';
        put '[run("macro1")]';
        put '[alignment(7,1,2,0)]';
        put 'DDE is not funny at all!';
run;
[/code:12t57irm]

这样不会出错,但是每次打开含有宏的表EXCEL都会亲切的问候您吃了吗?当然您也可以在Tools->Options->Security->Macro Security里关掉这个选项,但这样又少了很多事情可做,失业机会随之大增。




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2