我对SAS编程比较陌生,并且继承了用DDE编写的代码来打开数据并将其导出到模板。
下面是使用的代码:
** Use DDE to port the data to Excel template.;
* Start Excel.;
OPTIONS NOXWAIT NOXSYNC;
X "'C:\Program Files (x86)\Microsoft Office\Office16\EXCEL.EXE'";
DATA _NULL_;
zzzz = sleep(20);
RUN;
* Open the Excel file.;
FILENAME CMDEXCEL DDE 'EXCEL|SYSTEM';
DATA _NULL_;
FILE CMDEXCEL;
PUT '[OPEN("I:\J3 O\J3 OP Integration Division\Customer Support\RESEARCH\Weekly Workload\Open Ticket SAS Reports\Open_detail_Template.xlsx")]';
RUN;
DATA _NULL_;
zzzz = sleep(20);
RUN;
* Move labels.;
FILENAME DDEWRITE DDE "EXCEL|Open!r2c1:r7000c14" NOTAB;
DATA _NULL_;
FILE DDEWRITE;
set todays_detail;
if crm_group = 'OP';
put
color '09'x
employee '09'x
ticket_number '09'x
pri_text '09'x
open_date '09'x
due_date '09'x
classification '09'x
requisition_num '09'x
nsn '09'x
dodaac '09'x
depot '09'x
status '09'x
tot_tix '09'x
tot_actions
;
run;
DATA _NULL_;
zzzz = sleep(2);
RUN;
DATA _NULL_;
FILE CMDEXCEL;
PUT '[SAVE.as("'"I:\J3 O\J3 OP Integration Division\Customer Support\RESEARCH\Weekly Workload\Open Ticket SAS Reports\Open Ticket Detail Report &rpt_date2..xlsx"'")]';
PUT '[QUIT()]';
run;
我注意到,X语句可以很好地打开excel应用程序。但是,这就是挂断的地方。在我的同事计算机上,模板打开,您可以看到正在写入相应模板字段的数据。我尝试了许多不同的方法来尝试使DDE连接正常工作。香港专业教育学院试图禁用所有加载项,禁用并启用excel中的“忽略其他应用程序”复选框,关闭所有应用程序,仅运行SAS EG,重新启动计算机并运行等,等等。
我也调查了
的答案Problems with SAS DDE with Office 2010
Change from DDE to proc export because office 2016 does not support it
我认为最后一个链接是最有用的,但我想尝试将代码保持原样。
我确实拥有SAS PC / ACCESS许可证,所以我认为proc导入和proc导出可能是一个选择。我不太确定我将如何复制它以执行与DDE代码相同的步骤。
感谢您的帮助。我非常感激时间。
注意:我已经阅读了修复Microsoft工程的选项,但是目前这不是我可以选择的选项。
答案 0 :(得分:1)
DDE是古老的技术。与PC上其他进程的某些奇怪交互可能会使它崩溃。如果可以弄清楚正在运行的其他程序正在劫持DDE信号并关闭它,则可能会使其工作。
或切换到另一种方法。例如Visual Basic。
看一下这篇论文。有关示例,请参见示例8。