
表題のとおり、WEB上の特定タグ要素の位置にマウスポインタを移動させることはできないでしょうか?要素は抽出できますが、要素と画面上の位置の把握ができるかどうかがわかっていません。
エクセルVBAから操作したいので、できればVBでなくVBAベースでご回答頂けると助かります。
具体的には、下記の質問に添付している画像にしめすTabをクリックしたいです。
本質問の背景は、下記質問でTabに関する要素を取出し、.Clickしても反応しないため、これを解決するために別の手段として本質問の内容でマウスポインタを移動し(api使用)、mouse_event によるクリックでこれを実現したいと考えている次第です。
このような事情ですので、本質問ではなく直接下記質問に対するご助言を頂いても構いません。むしろ助かります。
【VBA/HTML】IE画面内のページTabをクリックしたい
<https://oshiete.goo.ne.jp/qa/9622334.html>
No.1ベストアンサー
- 回答日時:
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
大変ありがとうございます。
やりたいこと、完璧にできました!!!!!!
本当に本当に感謝いたします。
この手の関数はイメージが全くできず、本当に難しいです。
ですが、このあたりを理解できればかなり操作がすらすらできるのだろうなと感じています。
この度は、所望の要素にポイントをおきクリックさせましたが、下記質問に示す<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#
本当に長い間お付き合いありがとうございます。
数日後に締切ます。もしよろしければ↑コメント頂けると嬉しいです。
No.3
- 回答日時:
後はFireEventぐらいしか思い付きません。
ありがとうございます。
遅くなりまして申し訳ございません。
結局、この度最初に投稿頂いたsub hogeを利用させて頂きやりたいことを網羅できました。
大変感謝しております。
追伸:別途またファイルのダウンロードで困っていますのでこれから投稿致します。
もしよろしければご教授願います。
No.2
- 回答日時:
上手く行った様で何よりです^^;
それで、IAccessibleが取得出来るなら、
acc.accDoDefaultAction 0&
でもタブ要素をクリック出来そうな気がしますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- その他(Microsoft Office) 1の行を固定した上でVBAを用いて日付順に自動並べ替え 2 2022/06/06 15:09
- Visual Basic(VBA) 複数指定セルの可視セルのみを別シートに転記するVBAについて 2 2022/05/27 21:19
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- カスタマイズ(車) (続き)初めてカーナビの取付にチャンレジします。アドバイスください。 3 2022/12/10 15:13
- Visual Basic(VBA) VBA 画面上のカーソルに文字数字を入力するコードを教えて下さい 1 2022/10/30 10:31
- Visual Basic(VBA) 重複したデータ(空白は除く)のVBA表記について 5 2022/08/15 12:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- JavaScript Google reCAPTCHAについて 1 2023/02/22 14:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
[C++] vector<string> の各要素...
-
ajaxで追加したdom要素にscript...
-
VBA スクレイピング
-
ページ全体をスクロールするAja...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
Excelでワードアートや図を常に...
-
PDFを(htmlのように)無限に縦...
-
エクセルでポップアップを出し...
-
別フォームから戻ったときのイ...
-
Javascript_submit()完了後に処...
-
[Java] Edgeでのアドレスバー非...
-
ウインドウを毎回同じ位置、大...
-
マイページはどこを開くの
-
Visual Basicから Spreadのスク...
-
Outlookでこのような表示がされ...
-
エクセルVBAでフォームのListbo...
-
スクリプトって、何ですか?ど...
-
VBの画面で、全ウィンドウを一...
-
サブウィンドウを常に最前面に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
(VBS) テキストファイル読込で...
-
bxSliderで動画をスライドごと...
-
エクセルの散布図で選択してい...
-
スプレッドシートのチェックボ...
-
VC++のデバッガでvectorの要素...
-
JavaScriptでクリップボードの...
-
パイソンでのカッコ
-
JQuery、セレクトボックスをル...
-
どこまでを動的に、どこまでを...
-
PL/Iについて、教えてください。
-
フォームで入力時自動で次の項...
-
【VB.NET】HTML要素を取得しよ...
-
WebサイトのHTMLオブジェクトの...
-
【VBA/HTML】特定のタグ要素に...
-
MFCを使って、ひとつのkey(CStr...
-
デジタル時計の時刻合わせの方...
-
エクセルのシート上に別のシー...
-
マイページはどこを開くの
-
スクリプトって、何ですか?ど...
-
[Java] Edgeでのアドレスバー非...
おすすめ情報
ちなみにですが、クリックしたい位置をあらかじめ調べてポインタを置くことはできます。
ただ、PCが異なる場合、IEの表示サイズが異なる場合にも対応したいため要素の位置を取得したいです。
あ、、お礼のコメントで呼び捨てしてしましました。。
kumatti_1様です。失礼いたしました。