【问题标题】:Copy and paste a table from one word document to another SAS DDE将表格从一个 Word 文档复制并粘贴到另一个 SAS DDE
【发布时间】:2019-05-28 17:39:33
【问题描述】:

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

我想将整个表格从一个 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]';,但似乎没有任何效果,并且代码崩溃了。有谁知道复制整个表格的语法,然后将其粘贴到不同的文档中?

【问题讨论】:

  • 试试Copy,大写C和Paste,大写P。这些已经存在很长时间了,很难想象它们有什么不同。你检查过 Excel 参考资料吗?
  • 另外,如果您正在处理多个文件,您可能希望每个文件都有特定的文件引用,否则将很难知道哪个文件在哪里。
  • 不幸的是 CopyPaste 不起作用,它们只是以相同的方式崩溃:(我喜欢关于不同文件引用的想法,一旦我得到复制/粘贴在一个文档中工作,我'一定会尝试实现它。我在这里找到了对copy() 的 Excel 引用:communities.sas.com/t5/SAS-Programming/…,但这也会崩溃,所以我不确定出了什么问题
  • 命令中是否包含括号?
  • 我试过带和不带括号,都不管用:(

标签: ms-word sas dde


【解决方案1】:

这是 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 日找到。

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

【讨论】:

  • DDE 永远不会消亡。 (?)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
  • 1970-01-01
  • 2023-01-07
  • 1970-01-01
相关资源
最近更新 更多