簡體   English   中英

如何使用SendKeys從DOS應用程序復制粘貼到Excel?

[英]How to copy-paste from DOS application to Excel using SendKeys?

我正在嘗試模擬此操作:

  • 激活另一個應用程序,
  • 發送擊鍵Ctrl + c,
  • 回到Excel,
  • 發送按鍵Ctrl + V

並在單元格中具有該值。

它是DOS窗口樣式的應用程序,因此擊鍵是管理它的唯一方法。

我設法激活並在DOS風格的應用程序中輸入了ENTER之類的擊鍵,但是當我嘗試按ctrl + C時 ,看不到它有任何作用。

我嘗試使用以下方法在Excel VBA中對其進行仿真:

Range("E7").Select
SendKeys "^c"
Range("G7").Select
SendKeys "^v"

E7值不會被復制,但是G7(粘貼目標)會突出顯示,就像選擇復制一樣。

注意:我不是試圖將內容從Excel復制到Excel,而是要使用Excel執行擊鍵。

我今天遇到了同樣的問題。

我通過將CTRL-C發送到應用程序后稍等片刻來解決它。 如果立即執行另一個腳本行,似乎什么也不會復制。

SendKeys "^c"
WScript.Sleep 100 ' wait a bit after CTRL+C (otherwise nothing is copied)

實際上,切換到另一個應用程序並發送CTRL + V時似乎也會發生相同的問題。 再次,我通過稍等片刻解決了它:

AppActivate "Microsoft Excel"
WScript.Sleep 100 ' wait a bit after making window active
SendKeys "^v"

我遇到了同樣的問題-我開發了代碼,並且可以在我的計算機上使用-SendKeys“ ^ v” ...但在其他用戶的計算機上卻無法使用! 我正在嘗試一切...延遲,欣賞,從Excel訪問accessig,讓用戶檢查各種設置,selection.paste ...不好。 最后,我注意到了不同的語法...我們使用的是相同的Office版本,但是我不確定Windows。 但是我輸入了6種不同的語法,如果失敗了,則跳過它。...帶有大寫字母v的SendKeys,括在squigley括號中,squigley中的每個組件都用加號分隔,等等。 其中2個命令將^ V放在Outlook主體中...我刪除了這2個命令,我很高興。

問題在於復制和粘貼需要一些時間,而VBA沒有等待它。

首先,您需要指定發送密鑰方法的第二個參數,即“等待”。 將其設置為true。 因此,VBA執行一直在等待,直到發送密鑰完成為止。

其次,您需要等待直到將數據復制到剪貼板的過程完成。 sendkeys中的“等待”不是這樣做的,因為這與VBA發送密鑰無關,而與Windows使用剪貼板有關。 為此,請使用我的函數IsCopyingCompleted。

這是final的樣子:

SendKeys "^a", True 'Select all
SendKeys "^c", True 'Copy
Do
    DoEvents
Loop Until Me.IsCopyingCompleted()
YourSheet.Paste

Function IsCopyingCompleted() As Boolean
'Check if copying data to clipboard is completed

    Dim tempString As String
    Dim myData As DataObject

    'Try to put data from clipboard to string to check if operations on clipboard are completed
    On Error Resume Next
    Set myData = New DataObject
    myData.GetFromClipboard
    tempString = myData.GetText(1)
    If Err.Number = 0 Then
        IsCopyingCompleted = True
    Else
        IsCopyingCompleted = False
    End If
    On Error GoTo 0

End Function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM