首页 > 解决方案 > SAS DDE 到 Excel 2016 修复/替代?

问题描述

我对 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,重新启动我的计算机并运行它等等。

我也调查了来自的答案

SAS 通过 DDE 将数据放入 Excel

SAS DDE 与 Office 2010 的问题

从 DDE 更改为 proc 导出,因为 office 2016 不支持它

我认为最后一个链接是最有帮助的,但我想尽量保持代码不变。

我确实有 SAS PC/ACCESS 许可证,所以我想 proc import 和 proc export 可能是一种选择。我不太确定如何复制它以执行与 DDE 代码相同的步骤。

感谢您的帮助。我非常感谢时间。

注意:我已经阅读了修复 microsoftworks 的选项,但是目前这不是我可以选择的选项。

标签: excelsasexcel-2016dde

解决方案


DDE 是一种古老的技术。与 PC 上的其他进程有一些奇怪的交互,可能会导致它崩溃。如果您能找出您正在运行的其他程序正在劫持 DDE 信号并关闭它,您可能会使其工作。

或者切换到另一种方法。比如Visual Basic。

看看这篇论文。请参阅示例 8,了解与您的情况相近的内容。

http://www.sascommunity.org/mwiki/images/d/d6/2444-2018.pdf


推荐阅读