我可以使用Excel 2007中的VBA命令集中到另一个窗口吗?

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

例如:

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

这可能吗? 我无法在网上find正确的信息,并且觉得可以使用Excel VBA来做到这一点。

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

你可以:

  • 使用C#创build一个Microsoft Windows级别的应用程序。
    这里有一些链接:
    • 如何通过CSharp编程设置input元素的值?
    • 在这篇博文中
  • 使用VBA和IE API来调用网页,并使用Excel文件的值填充input。
    这里有一些链接:
    • 在Excely.com
    • 在vbaangular落

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

它允许您使用非常直观的专有语法来编写macros。

我想解决的问题使用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 

这是不值得去详细说明这个语法,但我只是为了演示而粘贴它。

如果您需要在多个窗口中自动执行需要特殊的鼠标和键盘操作的任务,该程序可以提供更多的function,值得仔细观察。 正常的编程方面,如variables和循环也支持。

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