下面的代码不像预期的那样工作:
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工作表中的按钮时,将执行此代码。它应该带一个app到focus (Alt+Tab),然后选择应用程序中的所有数据(Alt ),复制所有选定的数据(Alt ),然后返回到Excel (Alt+Tab)并将剪贴板粘贴到单元格A1。但Excel粘贴的是“旧”剪贴板内容,它不复制应用程序的内容。我试着在每一行代码之间休眠500毫秒,但没有什么改变(Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr
)。
看来,对于每一行SendKeys,Excel都会自动将焦点带回工作表。如何防止它发生,以便焦点保持在另一个应用程序上,直到第二个Alt+Tab行被执行?
有什么线索吗?
发布于 2018-06-14 16:21:12
这是不可能的
在每个https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-sendkeys-method-excel中,sendkey方法只将击键提交给活动应用程序的键缓冲区,在本例中是Excel,而不是OS。
https://stackoverflow.com/questions/50861876
复制相似问题