2013-10-03 53 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粘貼仍然無法正常工作,我不知道爲什麼。由於我現在所遇到的問題已經演變,我不會再花費更多時間。

這是爲了診斷目的而使事情變得更簡單的罕見時間之一實際上使事情變得更加困難。