分类:医学统计

关键词:统计报表DDESASSAS宏程序

正文

/*
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的速度比较慢的话,可能会出现找不到文件的错误。

转载原创文章,请注明:转载自益药,益友-Medleaf的医药博客[http://www.cnmed.net/blog/]
本文链接地址:http://www.cnmed.net/blog/2009/sas2word-baobiao-macro-program-intro.html

暂时没有人发言

我要发言

 

点击换一张验证码