将表格从一个Word文档复制并粘贴到另一个SAS DDE

时间:2019-01-02 00:57:16

标签: ms-word sas dde

我正在使用SAS v9.4,并通过DDE运行到Word 2010的连接。

我想将整个表格从onw word文档复制并粘贴到另一个。该表被标记为“ IDX”,我可以使用以下代码选择该表:

options noxsync noxwait xmin;
filename sas2word dde 'winword|system';
data _null_;
  file sas2word;
  put '[EditGoTo.Destination = "IDX"]';
  put '[TableSelectTable]';
run;

我尝试了put '[ctrl+c]';put '[copy]';put '[TableCopy]';put '[SelectionCopy]';,但似乎没有任何效果,并且代码崩溃了。有谁知道复制整个表然后将其粘贴到其他文档中的语法?

1 个答案:

答案 0 :(得分:2)

这是SAS 9.4M4示例代码,该示例代码使用实验性的ODS WORD目标创建两个Word文档,并将一个表复制到另一个表。 YMMV,您可能还有其他工作要解决诸如表包装和锚定等问题。

filename one "c:\temp\one.docx";
filename two "c:\temp\two.docx";

ods _all_ close;

title; footnote;

options nocenter nonumber nodate;

ods word file=one;
  proc print data=sashelp.class (obs=5);
  proc print data=sashelp.cars (obs=5);
  proc print data=sashelp.demographics (obs=5);
  proc print data=sashelp.class (obs=5);
  run;
ods word close;

ods word file=two;
  proc print data=sashelp.cars (obs=10);
  run;
ods word close;

* start WORD;
options noxsync noxwait xmin;
%sysexec start "Yada yada yada" winword;
%let rc = %sysfunc(sleep(5,1));
%put NOTE: &=rc;

* define channel for sending commands;
filename word_cmd dde 'winword|system';

* put will send the commands to WORD;
data _null_;
  file word_cmd;
  cmd = cats ( "[FileOpen.Name=", quote(trim(pathname("One"))), "]");
  put cmd;

  put '[EditBookmark name:="IDX3", goto:=1]';
  put '[NextObject]';
  put '[GoToNextSection]';
  put '[TableSelectTable]';
  put '[EditCopy]';

  cmd = cats ( "[FileOpen.Name=", quote(trim(pathname("Two"))), "]");
  put cmd;
  put '[Selection.Goto(wdGotoLine, wdGotoLast)]';
  put '[EditPaste]';
run;

Word命令ListCommands将创建一个包含所有Word命令和活动键映射表的文档。

data _null_;
  file word_cmd;
  put '[ListCommands]';
run;

该列表在Word 2016中持续显示10页。Word命令也可以从dde连接中调用。不幸的是ListCommands列出了描述性的命令名称,而不是dde实际需要的命令,并且实际上没有列出所有命令。 WordMVP网站(https://wordmvp.com)已组装了一个列表-"Word for Windows commands"

  

Word具有内置命令ListCommands,该命令可生成包含所有Word命令及其当前键和菜单分配的表。但是,它不会使用命令的实际名称列出这些命令。也没有包含命令实际作用的描述。
  …
  WordCmndsPDF.zip包含所有可拦截的Word命令(Word 97及更高版本)的列表,并使用其正确的英文名称

有关Word命令的其他参考信息,请参见"Visual Basic Equivalents for WordBasic Commands",2014年6月13日。

SAS会议论文中搜索“ WORD DDE”也将提供其他材料。