当我在运行Office 2007时,我的SAS DDE脚本已经填充,保存并关闭了excel文件。
我最近更新到Office 2010,人口工作正常...但excel在保存对话框中停止。我必须手动点击保存,我之前不需要这样做。
任何人都知道如何解决这个问题?
我正在使用的代码:
filename commands DDE 'EXCEL|SYSTEM';
data _null_;
file commands;
put '[OPEN("pathtoexcelfile.xls")]';
run;
data _null_;
file commands;
put "[Save.as(""&saveas_Path.&saveas..xls"")]";
put "[Close]";
run;
答案 0 :(得分:4)
您需要在close语句中添加(0)
。这告诉它不要提示。
data _null_;
file commands;
put "[Save.as(""&saveas_Path.&saveas..xls"")]";
put "[Close(0)]";
run;
这是我的完整宏(解释了一些doc类型参数):
/******************************************************************************
** PROGRAM: MACRO.DDE_SAVE_AS.SAS
**
** DESCRIPTION: SAVES THE CURRENT EXCEL FILE. IF THE FILE
** ALREADY EXISTS IT WILL BE OVERWRITTEN.
**
** PARAMETERS: iSAVEAS: THE DESTINATION FILENAME TO SAVE TO.
** iType : (OPTIONAL. DEFAULT=BLANK).
** BLANK = XL DEFAULT SAVE TYPE
** 1 = XLS DOC - OLD SCHOOL! PRE OFFICE 2007?
** 44 = HTML - PRETTY COOL! CHECK IT OUT...
** 51 = XLSX DOC - OFFICE 2007 ONWARDS COMPATIBLE?
** 57 = PDF
**
** NOTES: IF YOU ARE GETTING A DDE ERROR WHEN RUNNING THIS MACRO THEN DOUBLE
** CHECK YOU HAVE PERMISSIONS TO SAVE WHERE YOU ARE TRYING TO SAVE THE
** FILE.
**
*******************************************************************************
** VERSION:
** 1.0 ON: 01APR10 BY: RP
** CREATED.
******************************************************************************/
%macro dde_save_as(iSaveAs=,iType=);
%local iDocTypeClause;
%let iDocTypeClause=;
%if "&iType" ne "" %then %do;
%let iDocTypeClause=,&iType;
%end;
filename cmdexcel dde 'excel|system';
data _null_;
file cmdexcel;
put '[error(false)]';
put "%str([save.as(%"&iSaveAs%"&iDocTypeClause)])";
put '[error(true)]';
run;
filename cmdexcel clear;
%mend;
/*%dde_save_as(iSaveAs=d:\rrobxltest, iType=44);*/
答案 1 :(得分:1)
之前我使用过以下内容:
put '[save.as("' "&savepath\&savename..&save_ext" '",1,,false,,false)]';
我不能说参数“1”和“false”实现的是什么,因为我没有手头的DDE文档,也无法在线找到它(它叫做macrofun.hlp,你会找到引用它在许多SUGI论文中,例如http://www2.sas.com/proceedings/sugi26/p011-26.pdf)
无论如何,可能值得研究DDE的替代品,这在现阶段相当陈旧。