我正在尝试创建一个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,剪贴板文本将按预期粘贴。
我觉得我错过了一些明显的东西。欢迎任何帮助。
答案 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.Application
与objWord
相同。
答案 2 :(得分:0)
确定。这部分解决了。
最初的问题 - objWord.Selection.Paste无法正常工作 - 结果是剪贴板和创建VBS脚本的软件之间的奇怪时序交互。基本上,脚本在剪贴板知道数据之前尝试进行粘贴。一旦我拿走了计时问题,objWord.Selection.Paste正如预期的那样工作。我们还没有解决这个问题,但至少我们现在知道发生了什么,可以解决它。从纯粹务实的角度来看,上面提出的问题不再重要。
SendKeys粘贴仍然无效,我不知道为什么。因为我现在已经解决了这个问题,所以我不会再花时间了。
这是极少数情况下,为了诊断目的而使事情变得更简单实际上使事情变得更加困难。