在统计师创建好shell后,之后SAS程序员可能就得把shell上的title和footnote、还有一些shell下的notes复制到EXCEL上,这个过程不仅需要花费大量的时间,而且效率还低。
也许你现在还在痛苦的写着SDTM,但是到后面你就得接触越来越多的CDISC之外的东西,你得了解公司宏是怎么运用的;项目前期准备工作是什么样的等等等等。
然后网上有很多文章介绍了如何自动或者半自动地读取RTF文档,获取shell上的title和footnote,比如通过EXCEL自带的VBA。我看了几篇,然后也尝试去运行了一下,但是要么程序报错,要么读取不正确,乱七八糟的。
然后今天看了一篇文章,虽然到最后也不能达成我们的最终目的---完整的获取shell上的title和footnote,但是也算是拓宽知识面吧。看看就好。
整个过程都是在一个宏里面,截图顺序代表程序顺序:
宏参数in代表你要读取的word文件:具体路径加上文件名
宏参数out代表你要输出的数据集名
宏参数location代表你要输出的excel物理路径
session没看到宏里面有用到(当然,文章没有把全部代码列出)
page应该是shell第几页,但是这样不还是跟手动没多大差别吗?但是我们可以写个循环,说不定有用。
%let rc=%sysfunc(system(start winword));
这个是打开word命令,成功运行,这个可以算是一个小技巧。
data _null_;
x=sleep(5); **5秒后再运行;
run;
为什么要等5秒后SAS才运行呢?主要是等word打开吧,要是你word还没打开,就运行下面的DDE,可能就报错了。同理,下面打开excel也是一样的。
之后就是打开DDE,读取word文件,注意Viewheader是获取header(我输出失败,所以我也不知道是哪里的header),如果你想获取脚注还得Viewfooter,感觉好鸡肋啊!
这是文章展示的截图
之后就是关闭word,就跟我们ods rtf之后还得ods rtf close一样,可能是为了节省内存资源吧。
之后打开excel,5秒后运行程序,然后将读取的word内容写入EXCEL;最后输出excel。三步曲。
因为我用的是自己电脑上的SAS,然后提示我EXCEL没有获得这个SAS的授权什么巴拉巴拉的。所以看不到真实效果。这篇文章也只是当给大家乐呵乐呵。
当然,还有其他方法导入shell上的title和footnote,等我成功了在写出来吧。
文章来源:
《Reading Title and Footnote from RTF Output into SAS® utilizing Microsoft® Excel》Ajay Gupta, PPD Inc, Morrisville, NC
网友评论