【问题标题】:Can I focus to another window with a VBA command in Excel 2007?我可以在 Excel 2007 中使用 VBA 命令聚焦到另一个窗口吗?
【发布时间】:2012-02-24 20:46:31
【问题描述】:

我想从 Excel 2007 运行一个 VBA 脚本,该脚本可以将焦点切换到另一个活动窗口 (ALT+TAB) 向该窗口发送命令,然后将焦点返回给 Excel 并继续在 VBA 中执行命令。

例如:

复制单元格 A1 的内容,聚焦到活动的 Internet Explorer 窗口,发送 TAB 键命令,从 A1 粘贴复制的数据,然后重新聚焦到 Excel 以继续 VBA 脚本。

这可能吗?我在网上找不到正确的信息,感觉可以使用 Excel VBA 来做到这一点。

【问题讨论】:

  • 虽然可以使用 AppActivateSendKeys 以非常笨拙的方式做你想做的事,但对于你的例子来说,自动化 IE(如 JMAX 所建议)或使用XMLHTTP

标签: vba excel sendkeys


【解决方案1】:

我最终找到并使用了这个名为 AutoHotkey 的软件。它是免费和开源的。

它允许您使用非常直观的专有语法编写宏脚本。

我想解决的问题是使用 AutoHotkey 与 Excel VBA 相比更容易执行。

上述伪代码的AutoHotkey代码:

#space::
;Focus to Excel and copy contents of cell A1
WinActivate Microsoft Excel - filename.xls
Send {Ctrldown}{Home}{Ctrlup}
Send ^c

;Focus to Internet Explorer, TAB to the first field, and paste clipboard data into it
WinActivate Google - Windows Internet Explorer
Send {Tab}
Send ^v

;Focus back to Excel
WinActivate Microsof Excel - filename.xls
return

这个语法的细节不值得讨论,但我只是将其粘贴用于演示目的。

如果您需要跨多个窗口自动执行需要特殊鼠标和键盘操作的任务,该程序可以提供更多功能,值得仔细研究。也支持变量和循环等常规编程方面。

WikiPedia 上还有关于该程序及其潜在用途的更多一般信息

【讨论】:

  • 请注意,您可以接受自己的回答来“关闭”该主题,而您似乎已经找到了解决问题的方法。谢谢你顺便分享一下。
  • 我知道这一点并且过去也这样做过,但是在接受自己的答案之前,您必须等待一段时间。还是谢谢
  • 对不起,我忘了延迟
【解决方案2】:

在 VBA 本身中,您不能按字面意思发送密钥或掌握另一个应用程序。但是,您可以使用 Microsoft API 来模拟 Office 套件中的行为,或者在某种程度上模拟 Internet Explorer 中的行为。

您可以:

【讨论】:

  • 指向 vba-corner 的链接实际上向您展示了如何切换到活动的 IE 实例,因此它可能是 OP 正在寻找的。虽然我建议从一开始就简单地自动化 IE。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多