Excel Sendkeys - 如何防止 Excel 在 VBA 发送键时重新获得焦点?

Excel Sendkeys - How to prevent Excel from getting focus back when VBA sends keys?

下面的代码没有按预期工作:

Sub CopyDataFromAppThenBackToExcel()

    SendKeys "%{TAB}"  'Send Alt+TAB
    SendKeys ("%es")   'Send Alt then "E" then "S"
    SendKeys ("%ec")   'Send Alt then "E" then "C"
    SendKeys "%{TAB}"  
    Range("A1").Select
    ActiveSheet.Paste

End Sub

当我单击 Excel 工作表中的按钮时,将执行此代码。它应该将应用程序置于焦点 (Alt+Tab),然后 select 应用程序中的所有数据 (Alt E S),复制所有 selected 数据 (Alt E C),然后返回 Excel (Alt+Tab) 并将剪贴板粘贴到单元格 A1。但是 Excel 粘贴的是 "old" 剪贴板内容,它不会复制应用程序的内容。我试图在每行代码之间休眠 500 毫秒,但没有任何改变 (Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr))。

似乎对于每个 SendKeys 行,Excel 都会自动将焦点带回工作表。我如何防止它发生,以便在执行第二个 Alt+Tab 行之前焦点一直在另一个应用程序上?

有什么线索吗?

这是不可能的

根据 https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-sendkeys-method-excel,sendkeys 方法仅将击键提交到活动应用程序的键缓冲区,Excel 在这种情况下,而不是 OS。