2

我希望有人可以帮我解决这个问题。下面的 VB 脚本在 Excel 中并创建一个新的 Word 文档。该代码会将图片从 Excel 复制到 Word 中。然后它将创建一个文本框并将其放置在图片上。然后它将文本放入文本框中。此代码确实可以正常工作。

Set wrdApp = CreateObject("Word.Application")
wrdApp.Visible = True
Set wrdDoc = wrdApp.Documents.Add

Sheets("Sheet1").Shapes("Picture1").Copy
wrdApp.Selection.Paste


With wrdDoc.Shapes.AddTextBox(msoTextOrientationHorizontal, 200, 150, 96, 50)
    .Select
    .Name = "TextBox1"
End With


With wrdApp.Selection
    .ShapeRange.Fill.Visible = 0
    .ShapeRange.Line.Visible = 0
    .TypeText Text:="My picture text"
End With

如前所述,上面的代码确实有效。问题是我需要将它放在一个循环中以再次复制图片(X 次)。当我编写代码将其放入循环中时,它会将附加图片粘贴到 TextBox 中,因为这是最后一次选择的。我不知何故需要编写诸如 Ctrl + End 键之类的代码,以便将光标带到文档末尾和文本框之外。我不能让它工作。

为此,我需要使用以下代码:

Selection.EndKey Unit:=wdStory

所以在代码中插入它的正确位置应该是这个部分,就像我在下面的那样:

With wrdApp.Selection
    .ShapeRange.Fill.Visible = 0
    .ShapeRange.Line.Visible = 0
    .TypeText Text:="My picture text"
    .EndKey Unit:=wdStory
End With

当我添加该行时,这给了我一个 VB 错误。现在,如果我将此代码复制到 Word 并从宏运行它,它将完美运行。但是,此代码在 Excel 中,必须在 Word 中创建所有内容。

有人可以告诉我如何获取它,以便将光标移出 TextBox 并移至文档末尾吗?我知道这个问题是因为代码在 Excel 中并试图转到 Word,必须有某种方法让它工作或使用 ASCII 的类似代码。我已经尝试了我能想到的一切,并花了几个小时寻找解决方案。

感谢有人可以提供的任何帮助,

克里斯

4

2 回答 2

1

如果我正确理解您的问题,这对我有用:

With wrdapp.ActiveDocument
  .Range(.Range.Characters.Count, .Range.Characters.Count).Select
End With

编辑

试试这个(添加东西,删除东西,看看有什么用):

With wrdapp.ActiveDocument
  .Range(.Range.Characters.Count, .Range.Characters.Count).Select
  .GoTo wdgotobookmark, name:="\EndOfDoc"
  Selection.Move wdCharacter, .Characters.Count
End With
于 2013-03-03T21:05:35.407 回答
0

虽然这可能不是理想的方式,但下面的代码将清除 Word 中的选择,将焦点移出文本框。

wrdApp.Activate
SendKeys "{ESC}"
于 2013-03-03T21:46:04.743 回答