1

方法:

SendKeys と Virtual Keyboard の組み合わせを使用して、アプリケーションとして 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 をシステム アプリケーションに送信する方法、またはこれを行うためのより良い方法があれば教えてください。

ありがとうございました!

4

1 に答える 1