【问题标题】:Edit text in text box from macro从宏编辑文本框中的文本
【发布时间】:2017-03-23 14:32:53
【问题描述】:

我原以为这很简单,但我无法让它工作(如果可以的话,我真的可以为自己节省很多工作;我承认我不是 Word 宏向导)。

我有一个带有一堆文字简介的 Word 文档。我已经定义了一个自定义文本框并将其添加到文本框库中。现在我想在每个简介旁边放置一个文本框,然后将简介移动到文本框中。我希望定义一个宏来使其自动化(即,我手动选择简介文本,然后运行一个宏来剪切简介,将光标移动到其正上方的文本框中,并将简介粘贴到那里)。

这似乎是“进入文本框”部分的障碍。我可以通过以下步骤从键盘手动完成:

  • (光标位于文本框的左侧)shift-right-arrow(选择文本框)
  • F2(将光标放在文本框中进行编辑)

但尝试录制复制此内容的宏是行不通的。录制的宏的代码最终如下所示:

Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
ActiveDocument.Shapes.Range(Array("Text Box 2")).Select

当我在调试器中运行这个宏时,第一条语句实际上是选择宏启动时光标所在的文本框。

不幸的是,第二条语句不仅没有在该文本框内移动编辑光标(就像手动按 F2 键一样),它实际上选择了一个不同的文本框(文档中的第一个)。

我注意到,如果我查看“选择”窗格 (alt-F10),它会显示文档中的文本框,并且它们都具有相同的名称(“文本框 2”)。所以我想这是问题的一部分。 (Word 不会给每个文本框一个唯一的名称吗?)但似乎也找不到任何宏代码将编辑光标移动到当前选定的文本框(是否有 SetFocus 或类似的东西?)

这肯定是可能的吗? :-/

谢谢。

/约翰

【问题讨论】:

    标签: ms-word


    【解决方案1】:

    我知道这是愚蠢的深奥,但万一有人感兴趣,我想出了自己的答案。这是执行此操作的宏代码:

    Selection.Cut
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.HomeKey Unit:=wdLine
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.ShapeRange.TextFrame.TextRange.Select
    Selection.PasteAndFormat (wdFormatOriginalFormatting)
    

    诀窍是:

    1)关于没有在右侧文本框上操作的问题:当我尝试使用宏记录器定义宏时,Word让我失望了,通过插入ActiveDocument.Shapes.Range(Array("Text Box 2")).Select语句(按name em> 不起作用,因为所有文本框都具有相同的名称)。但是文本框已经被选中了(可以通过Selection.ShapeRange对象访问),所以无论如何都不需要再次选中它。

    2) 在文本框内移动编辑光标:选择 TextRange 对象(Selection.ShapeRange.TextFrame.TextRange.Select).

    我认为尝试通过宏录制来定义它是行不通的;录音只是没有做正确的事情。我不得不用手把它弄脏。

    感谢任何可能对此提出任何想法的人,谢谢!

    /约翰

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多