davil2000 发表于 2012-11-9 11:00 
x "cd d:\docs";
%macro word2sas(in=, out=);
/*%let in=data1.doc;*/
198 x "cd d:\docs"
198! ;
199 %macro word2sas(in=, out=);
200 /*%let in=data1.doc;*/
201 /*%let out=example1;*/
202 options noxwait noxsync;
203 %let rc=%sysfunc(system(start winword));
204 data _null_;
205 null= sleep(3);
206 run;
207
208 filename word DDE 'Winword|System';
209 data _null_;
210 file word;
211 put '[FileOpen.Name = "' "&in" '"]';
212 put "[EditSelectAll]";
213 put "[EditCopy]";
214 put '[FileClose]';
215 put '[AppMinimize]';
216 run;
217 %let rc=%sysfunc(system(start excel));
218 filename excel dde 'winexcel|system';
219 data _null_;
220 file excel;
221 put '[error(false)]';
222 put '[paste]';
223 put '[SAVE.AS("Example.xls")]';
224 put '[Select.Last.Cell()]';
225 put '[Copy]';
226 put '[quit]';
227 run;
228 proc import datafile= "Example.xls" out=&out dbms=excel replace;
229 getnames=no;
230 mixed=yes;
231 run;
232 filename fd "Example.xls";
233 %let rc=%sysfunc(fdelete(fd));
234 filename _all_ clear;
235 %mend word2sas;
236
237 %word2sas(in=data1.doc, out=example1);
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 3.01 秒
CPU 时间 0.06 秒
NOTE: File WORD 是:
DDE 会话,
SESSION=Winword|System,RECFM=V,LRECL=256
NOTE: 有 5 条记录写入到 File WORD 中。
最小记录长度是 10。
最大记录长度是 29。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.82 秒
CPU 时间 0.04 秒
ERROR: 物理文件 winexcel|system 不存在。
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “DATA 语句”所用时间(总处理时间):
实际时间 0.92 秒
CPU 时间 0.04 秒
ERROR: Unable to import, file d:\docs\Example.xls does not exist.
NOTE: SAS 系统由于错误而停止了该步的处理。
NOTE: “PROCEDURE IMPORT”所用时间(总处理时间):
实际时间 0.04 秒
CPU 时间 0.03 秒
NOTE: 已取消文件引用名 FD 的分配。
NOTE: 已取消文件引用名 WORD 的分配。
NOTE: 已取消文件引用名 EXCEL 的分配。
NOTE: 已取消文件引用名 SASAUTOS 的分配。
求助高手,如何解决?