我正在做一个项目,基本上,做屏幕抓取。我正在使用 VBA 根据存储在电子表格中的输入来驱动另一个系统。我遇到的问题是某些字段需要数字键盘中的 + 作为字段退出字符。
我使用 SendKeys 函数填写其他字段没有问题,但是对于我的一生,在我所做的任何研究中,我都无法弄清楚如何专门通过那个 + 。有没有人必须这样做?我觉得有一些简单的东西我没有得到......
不确定 2007,但 2003 和更早的 VBA SendKeys 不支持发送键盘特定键。
我确实找到了这个实用程序,它将做键盘键,http://cpap.com.br/orlando/SendKeysMore.asp ?IdC=New
大括号不起作用吗?
SendKeys I & "{+}", True
回到另一种生活,我编写了一个名为 PushKeys 的程序,它绕过了 VB SendKeys 命令的限制,但语法兼容并具有一些其他功能(如睡眠、数字键盘键)。我所在的网站已经不存在了,但幸运的是有人在这里存档了我的 PushKeys 程序。
有 VB、Delphi、C 等的变体。VB 应该很容易在 VBA 中工作。
我已经能够将AutoIT用于一些 MS Office VBA 项目,其中键盘或鼠标输入是唯一的方法,例如当 MS Office 没有在对象模型中公开某些内容但它存在于 GUI 中时。
在 AutoIT 脚本中,这应该可以在数字键盘上键入 + 键:
Send("{NUMPADADD}")
您可以编译 AutoIT 脚本 (*.au3) 文本文件来创建可以从 VBA 运行的 EXE:
Dim RetVal As Variant
RetVal = Shell("YourAutoITscript.exe")
您可以在www.autoitscript.com找到 AutoIT