Hello Word!-SAS统计报表宏程序sas2word介绍之一
2009-10-21 by medleaf
/*
SAS宏程序名称:helloWord
主要功能:用SAS启动windows系统中的winword程序,打开一个已经存在的word文件或创建新文件
主要参数:dir:给定的目录;docName:word文件名
使用方法:%helloWord(d:\test\a,hello); **目录可任意给定,不用加引号;文件名可以不加.doc的后缀,当然加了也no problem;
说明:这个宏在XP/SAS9.13/Office2007下运行正常,在类似的环境下估计也无问题(比如XP/SAS8/Office2003),热心的朋友请帮忙测试,有问题的话希望能反馈给我;
另外还有一点,这个宏中引用了另一宏(mkdir,功能是建立文件夹),在helloWord运行过程中,如果给出的目录不存在就用mkdir创建这个目录。
联系我:medleaf@gmail.com
我的主页:http://www.eyaoo.net/weblog/
*********************************************************/
%macro helloWord(dir,docName);
options noxwait noxsync xmin;
%let rc=%sysfunc(system(start winword));
filename cmds DDE 'Winword|System';
data _null_;
x=sleep(1);
data _null_;
file cmds;
%mkdir(&dir);
put '[FileClose 2]';
if fileexist("&dir\&docName") then
do;
put '[FileOpen.Name = "'"&dir\&docName" '"]';
end;
else
do;
put '[FileNew]';
put '[FileSaveAs.Name="'"&dir\&docName"'",.Format=0]';
end;
put '[AppMinimize]';
%global currentDoc;
%let currentDoc = "&dir\&docName";
run;
%mend helloWord;
/*
记:
在sas2word中,这个是比较基础的宏程序,原来在我的文章里也介绍过,这次改写了很多,精简了代码,增加了容错(自动建立目录等)功能。
注意: x=sleep(1);这一句中,建议在使用时将sleep的时间调的长些,如6或8秒,即x=sleep(8);否则,如果系统启动word的速度比较慢的话,可能会出现找不到文件的错误。
下载:









