首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel Sendkeys如何防止Excel在VBA发送键时重新获得焦点?

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

Stack Overflow用户
提问于 2018-06-14 16:15:35
回答 1查看 961关注 0票数 0

下面的代码不像预期的那样工作:

代码语言:javascript
运行
复制
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行被执行?

有什么线索吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-14 16:21:12

这是不可能的

在每个https://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-sendkeys-method-excel中,sendkey方法只将击键提交给活动应用程序的键缓冲区,在本例中是Excel,而不是OS。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50861876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档