2013-10-03 52 views
1

我正试图创建一个VBScript,从剪贴板插入一些文本到现有的(和加载的)Word文档中。我尝试过无数成功的方法(包括Selection.Paste),但Word(2013)将不会粘贴。在试图诊断问题的同时,我已经谈到了这个最小的脚本。为什么不会VBScript粘贴? 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 

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

我觉得我失去了一些明显的东西。任何帮助最受欢迎。

+0

你可以显示你的非工作非sendkeys代码? –

+0

说实话,我尝试了几十种组合 - 有些我知道是错的,有些应该是正确的。我最初去SendKeys找到一些可以工作的基线 - 但那也没有! 我试图 objWord.Paste objWord.ActiveDocument.Paste objWord.ActiveDocument.Selection.Paste objWord.Selection.Paste和PasteSpecials的一大堆。没有任何工作后,我尝试了(不太可取的)SendKeys方法。 –

+0

'objWord.Selection.Paste'为我工作。 –

回答

0

我有类似的问题之前,(我需要按Ctrl-C),但是这应该为你工作:

objShell.SendKeys "^{V}"

+0

不幸的是,它没有在这里工作。我真的很难理解为什么这么简单的东西不起作用。我可能需要尝试追踪旧版本的Word以消除一些奇怪的Word问题。感谢您的反馈 - 至少给了我一些短期的希望! –

+1

刚刚在Office 2010上尝试了相同的结果 –

0

避免不安全的按键模拟,当你有其他编程设施:

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

另请注意objWord.ApplicationobjWord相同。

+0

感谢您的反馈。不安全的击键选项是一切失败后的最后手段。我正在寻找(事实证明失败),因为某种基石需要处理。现在这个问题已经得到有效解决我会尽快发布解决方案StackOverflow让我(显然需要再等两个小时) –

+0

@PaulHooper我会期待这样的答案......当你问,你应该得到答案,而不是回答自己... –

0

好的。这部分解决了。

  1. 最初的问题 - objWord.Selection.Paste不工作 - 结束了剪贴板和软件创建VBS脚本之间的奇怪的时序互动。基本上,脚本试图在剪贴板知道数据之前进行粘贴。一旦我消除了时间问题,objWord.Selection.Paste正在按预期工作。我们还没有解决这个问题,但至少我们现在知道发生了什么并且可以解决这个问题。从纯粹务实的角度来看,上述问题已不再重要。

  2. SendKeys粘贴仍然无法正常工作,我不知道为什么。由于我现在所遇到的问题已经演变,我不会再花费更多时间。

这是为了诊断目的而使事情变得更简单的罕见时间之一实际上使事情变得更加困难。