方法:
我正在使用 SendKeys 和虚拟键盘的组合将击键发送到作为应用程序存储在 Citrix 上的核心管理系统。VBA 代码使用 AppActivate 和 Application.ActiveWindow 方法识别应用程序。
目标:
我的目标是让用户将数据输入到 Excel 电子表格中,并使用 VBA 将数据发送到核心管理系统,而不是用户手动键入。
问题:
我的问题很多,但截至目前,我正在努力将 Ctrl + f 发送到核心管理系统应用程序。它似乎无法识别笔画,但是,单独发送 f 或输入 "keybd_event VK_RETURN, mvk, 0, 0" 似乎有效。此外,“keybd_event VK_CONTROL, mvk, 0, 0”似乎很有希望,但运行时出现“溢出”错误。
代码(到目前为止):
Option Explicit
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte,
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare PtrSafe Function MapVirtualKey Lib "user32" Alias "
MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As Long
Private Const VK_RETURN = &HD
Private Const VK_CONTROL = &HD11
Private Const KEYEVENTF_KEYUP = &H2
Sub pleasework5()
Dim keys As String
Dim wsh As Object
Dim mvk As Double
Set wsh = CreateObject("WScript.Shell")
mvk = MapVirtualKey(VK_RETURN, 0)
AppActivate ("application name") 'use form to enter username
Application.ActiveWindow.Activate
Application.Wait Now() + TimeValue("00:00:05")
'keybd_event VK_CONTROL, mvk, 0, 0
wsh.SendKeys ("^f"), True
请让我知道如何将 Ctrl + f 发送到系统应用程序,或者是否有更好的方法来解决这个问题。
谢谢!