|
|
沙发

楼主 |
发表于 2008-12-19 07:45:13
|
只看该作者
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里关掉这个选项,但这样又少了很多事情可做,失业机会随之大增。 |
|