【发布时间】:2018-06-15 00:21:12
【问题描述】:
下面的代码没有按预期工作:
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),然后选择应用程序中的所有数据(Alt E S),复制所有选定的数据(Alt E C),然后返回 Excel(Alt+Tab)并粘贴剪贴板到单元格 A1。但 Excel 会粘贴“旧”剪贴板内容,它不会复制应用程序的内容。我试图在每行代码之间休眠 500 毫秒,但没有任何改变(Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)。
似乎对于每一行 SendKeys,Excel 都会自动将焦点带回工作表。如何防止它发生,以便在执行第二个 Alt+Tab 行之前将焦点保持在另一个应用程序上?
有什么线索吗?
【问题讨论】: