某先物取引を行うホームページで、座標(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は
このホームページはソースコードが表示されず、オブジェクトの取得が
できませんので、使用できませんでした。
ぜひとも、ご回答をよろしくお願いいたします。
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)
こん様、ご回答ありがとうございました。
SendKeys "P", True
SendKeys "{ENTER}", True
はだめでした。
しかしながら、keybd_eventで成功しました。本当にありがとうございました。
SendKeysも使えるようにしたいので、少しいじってみます。
ツイート | ![]() |