为什么VBScript不会粘贴? Word 2013

时间:2013-10-03 04:09:32

标签: vba vbscript ms-word

我正在尝试创建一个VBScript,它将剪贴板中的一些文本插入到现有(并加载)的Word文档中。我尝试了很多方法但没有成功(包括Selection.Paste),但Word(2013)将不会粘贴。在尝试诊断问题时,我已经找到了这个最小的脚本。

Set objWord = GetObject(, "Word.Application")
objWord.Application.Activate
Dim objShell
Set objShell = CreateObject("WScript.Shell")
objShell.SendKeys "Arggh 1"
objShell.SendKeys "^V"
objShell.SendKeys "Arggh 2"

如果我在剪贴板上放置一些文本(我已经开始使用基本的无格式文本,我最初使用MathML,但这是另一个故事),上面的脚本生成

Arggh 1Arggh 2

文本留在剪贴板上。如果然后按Ctrl + V,剪贴板文本将按预期粘贴。

我觉得我错过了一些明显的东西。欢迎任何帮助。

3 个答案:

答案 0 :(得分:0)

之前我遇到过类似的问题(我需要Ctrl-C),但这应该对你有用:

objShell.SendKeys "^{V}"

答案 1 :(得分:0)

如果您有其他程序设施,请避免不安全的击键模拟:

Set objWord = GetObject(, "Word.Application")
objWord.Selection.TypeText "Arggh 1"
objWord.Selection.Paste
objWord.Selection.TypeText "Arggh 2"

另请注意objWord.ApplicationobjWord相同。

答案 2 :(得分:0)

确定。这部分解决了。

  1. 最初的问题 - objWord.Selection.Paste无法正常工作 - 结果是剪贴板和创建VBS脚本的软件之间的奇怪时序交互。基本上,脚本在剪贴板知道数据之前尝试进行粘贴。一旦我拿走了计时问题,objWord.Selection.Paste正如预期的那样工作。我们还没有解决这个问题,但至少我们现在知道发生了什么,可以解决它。从纯粹务实的角度来看,上面提出的问题不再重要。

  2. SendKeys粘贴仍然无效,我不知道为什么。因为我现在已经解决了这个问题,所以我不会再花时间了。

  3. 这是极少数情况下,为了诊断目的而使事情变得更简单实际上使事情变得更加困难。