(300,200)の位置で"002"と入力してEnterキーを押すプログラムは?


maeda  2007-05-20 17:21:13  No: 98787

某先物取引を行うホームページで、座標(300,200)の位置にコードを
入力する欄があります。その入力欄に"001"や"002"などの商品コードを
入力してEnterキーを押すと、その商品のチャートが表示されます。
001(亜鉛先物)、002(銅先物)などのチャートです。
そこで、ExcelのA1列にコードを入力しておいて、そのコードをクリックする
と、クリックしたコードのチャートが表示されるようなプログラムを
考えています。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

dim r as integer
dim c as integer

if c=1 then

r=Activecell.row

Cells(r, 1).Copy

Dim Ret As Long
Ret = SetCursorPos(300, 200)
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0

までを実行すると、(300,200)の位置が右クリックされて、ポップアップメニューが
表示された状態になります。ここで「貼り付け(P)」ですので、
キーボードからPを入力して、さらにEnterキーを押せば、
入力したコードのチャートが表示されます。
ここで、このキーボードの"P"や"Enter"を入力するというのはどのようなコードを
かけばよいのでしょうか。

SendKeysは
このホームページはソースコードが表示されず、オブジェクトの取得が
できませんので、使用できませんでした。

ぜひとも、ご回答をよろしくお願いいたします。


こん  2007-05-20 21:16:34  No: 98788

SendKeys "P", True  
SendKeys "{ENTER}", True  

でだめだったんでしょうか?

APIのkeybd_eventを使う方法もあります。

Public Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Public Const VK_P = &H50     
Public Const VK_RETURN = &HD 

Public Const KEYEVENTF_KEYUP = &H2
Public Const KEYEVENTF_KEYDOWN = &H0

keybd_event(VK_P, 0, KEYEVENTF_KEYDOWN, 0)
keybd_event(VK_P, 0, KEYEVENTF_KEYUP, 0)

keybd_event(VK_RETURN, 0, KEYEVENTF_KEYDOWN, 0)
keybd_event(VK_RETURN, 0, KEYEVENTF_KEYUP, 0)


maeda  2007-05-21 00:02:44  No: 98789

こん様、ご回答ありがとうございました。
SendKeys "P", True 
SendKeys "{ENTER}", True 
はだめでした。

しかしながら、keybd_eventで成功しました。本当にありがとうございました。
SendKeysも使えるようにしたいので、少しいじってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加