文本与表格 SAS统计报表-动态数据交换(DDE)技术介绍(2)
2008-12-21 13:06使用sas的dde将文本写入Word文档,最常用的就两个WordBasic命令:Insert和InsertPara
看下面的这个例子:
%helloword(c:\,example); /*注:1*/
data _null_;
file cmds;
put '[Insert "我的第一个例子"]‘; /*注:2*/
put ‘[InsertPara]‘; /*注:3*/
run;
1:调用宏程序helloword,在C盘上建立一个名为example的Word文档
2:将“我的第一个例子”这几个字插入到上述文档当前光标的位置,也就是文档的第一行
3:插入一个段落标记,此时Word中的光标已经下移到第2行
怎么样,用DDE将文本写入Word文档比较简单吧,用英文的双引号将文本引起来,利用Insert命令就直接将这些引用的文本插入到文档中了。如 果此处的文本是一个宏变量,或者是一个宏程序中的参数,引用的格式稍有不同,实际上在宏程序helloword中就有这种情况:
put '[ChDefaultDir "'"&filepath"'",0]‘;
put ‘[FileSaveAs.Name="'"&docname"'",.Format=0]‘;
我们可以看到,对宏变量及参数的引用,使用的是英文的双引号单引号双引号“‘”将宏变量或参数引起来,在执行的时候宏变量或参数先被赋值然后执行,此时的宏变量或参数无需加双引号。如果定义宏变量或给参数赋值时加双引号,则使用双引号单引号“‘。
接下来(把下面这几句插入到上面程序中Run;的前面):
put '[Insert "表格1"]‘;
put ‘[InsertPara]‘;
put ‘[Insert "单元格1"+chr$(9)+"单元格2"+chr$(9)+"单元格3"]+[InsertPara]‘; /*注:4*/
put ‘[Insert "单元格2-1"+chr$(9)+"单元格2-2"+chr$(9)+"单元格2-3"]+[InsertPara]‘;
put ‘[EndOfDocument]‘; /*注:5*/
put ‘[ParaUp 2,1]‘; /*注:6*/
put ‘[TextToTable.ConvertFrom="1",.NumColumns=3,.NumRows=2,.InitialColWidth="Auto",.Format="4",.Apply="63"]‘; /*注:7*/
put ‘[FileSave]‘;/*注:8*/
我们来看看这几个语句的意义:
4:这个语句中出现了chr$(9),其实这个就是制表符,为将来表格的形成做准备;另外,这个语句还有一个不同之处,就是在单引号中有两对方括号,即在一个put语句中可以写多条WordBasic命令,每个命令用一对方括号括起来。
5:看这个命令的英文,我们就大概能猜出来,将光标放到文档的最末尾。当然,这个语句在这里其实没有用,因为光标已经在文档的末尾,我们只是为了举例。
6:这个语句也很好记,向上移动光标,移动的最小单位是1行。它有两个参数,第一个参数是向上移动的行数,第二个参数表示是否选取,1表示选取当前光标至 光标移动后所在位置的所有文本及控制符,0表示不选取,仅移动光标。[ParaUp 2,1]即表示选取当前光标上面的2行。
7:在6中我们已经选择了2行文本及其间的制表符,这一句就是把已经选取的部分,转成表格,这个命令和WORD表格工具中的选择->文本转换成表格 其实是一样的。TextToTable后面的几个参数是转换过程的具体控制,基本上从字面的意思就可以理解出来,以后如果有时间会详细介绍这些参数的使 用。
8:文件保存。
转载原创文章,请注明:转载自益药,益友-Medleaf的医药博客[http://www.cnmed.net/blog]
本文链接地址:http://www.cnmed.net/blog/2008/sas2word-with-dde-handling-txt-table.html













