アプリ版:「スタンプのみでお礼する」機能のリリースについて

表題のとおり、WEB上の特定タグ要素の位置にマウスポインタを移動させることはできないでしょうか?要素は抽出できますが、要素と画面上の位置の把握ができるかどうかがわかっていません。
エクセルVBAから操作したいので、できればVBでなくVBAベースでご回答頂けると助かります。

具体的には、下記の質問に添付している画像にしめすTabをクリックしたいです。
本質問の背景は、下記質問でTabに関する要素を取出し、.Clickしても反応しないため、これを解決するために別の手段として本質問の内容でマウスポインタを移動し(api使用)、mouse_event によるクリックでこれを実現したいと考えている次第です。
このような事情ですので、本質問ではなく直接下記質問に対するご助言を頂いても構いません。むしろ助かります。

【VBA/HTML】IE画面内のページTabをクリックしたい
<https://oshiete.goo.ne.jp/qa/9622334.html>

質問者からの補足コメント

  • ちなみにですが、クリックしたい位置をあらかじめ調べてポインタを置くことはできます。
    ただ、PCが異なる場合、IEの表示サイズが異なる場合にも対応したいため要素の位置を取得したいです。

      補足日時:2017/02/27 23:59
  • あ、、お礼のコメントで呼び捨てしてしましました。。
    kumatti_1様です。失礼いたしました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/28 22:18

A 回答 (3件)

accLocationメソッドの第一引数、第二引数に座標値が入って来ます。



参考
---
Option Explicit

Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type

Private Declare PtrSafe _
Function IUnknown_QueryService Lib "shlwapi.dll" ( _
ByVal punk As IUnknown, _
guidService As GUID, _
riid As GUID, _
ppvOut As IAccessible _
) As Long

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)


Sub hoge()

Dim IID_IAccessible As GUID

With IID_IAccessible
.Data1 = &H618736E0
.Data2 = &H3C3D
.Data3 = &H11CF
.Data4(0) = &H81
.Data4(1) = &HC
.Data4(2) = &H0
.Data4(3) = &HAA
.Data4(4) = &H0
.Data4(5) = &H38
.Data4(6) = &H9B
.Data4(7) = &H71
End With

Dim ie As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "https://www.google.co.jp/"

While ie.Busy Or ie.ReadyState <> 4
Sleep 1&
Wend

Dim e As Object
Set e = ie.Document.all("btnK")

Dim hr&
Dim acc As IAccessible
hr = IUnknown_QueryService(e, IID_IAccessible, IID_IAccessible, acc)

Dim a&, b&, c&, d&
acc.accLocation a, b, c, d

Debug.Print a, b



End Sub
この回答への補足あり
    • good
    • 0
この回答へのお礼

大変ありがとうございます。
やりたいこと、完璧にできました!!!!!!
本当に本当に感謝いたします。

この手の関数はイメージが全くできず、本当に難しいです。
ですが、このあたりを理解できればかなり操作がすらすらできるのだろうなと感じています。

この度は、所望の要素にポイントをおきクリックさせましたが、下記質問に示す<LI>リスト要素に対して行うことで実現できました。(<A>をやってみましたがTab位置にはポイントできませんでした)
また改めて、<LI>に対して.Clickで対応してみましたがやはり無反応でした。

このようなケースの場合はkumatti_1でも、マウス操作させる方法に頼ることはありますでしょうか?
それともまだまだやりようがあると思われますか?(どこまで追求するかにもよりますが)

【VBA/HTML】IE画面内のページTabをクリックしたい
<https://oshiete.goo.ne.jp/qa/9622334.html>

とにもかくにも、大満足です。https://oshiete.goo.ne.jp/qa/9653720.html#
本当に長い間お付き合いありがとうございます。
数日後に締切ます。もしよろしければ↑コメント頂けると嬉しいです。

お礼日時:2017/02/28 22:16

http://detail.chiebukuro.yahoo.co.jp/qa/question …
後はFireEventぐらいしか思い付きません。
    • good
    • 0
この回答へのお礼

ありがとうございます。
遅くなりまして申し訳ございません。
結局、この度最初に投稿頂いたsub hogeを利用させて頂きやりたいことを網羅できました。
大変感謝しております。

追伸:別途またファイルのダウンロードで困っていますのでこれから投稿致します。
もしよろしければご教授願います。

お礼日時:2017/03/20 02:56

上手く行った様で何よりです^^;



それで、IAccessibleが取得出来るなら、
acc.accDoDefaultAction 0&

でもタブ要素をクリック出来そうな気がしますが。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!