人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルVBAでIEを操作する方法について教えて下さい。

現在FocusがあるボタンのsourceIndexを取得する方法を知りたいです。
コマンドはありますか?

【背景】
複数ボタンがあるページにて、
特定の条件を満たす特定のボタンを押下したいのですが、
所望のボタン部分の生成がAjax的に動的に表示をしているせいか、
objIE.Document.all.Item("ボタンの名前")
の取得が失敗します(objIE.Refresh等の後waitを挟んでもダメ)。

このため、静的なボタンにFocusを移し、そこから
sendkeysにてTABでFocusを移して
Enterキーをsendkeysしてボタンを押したいと考えているのですが、
問題点として、押したいボタンの近くにある文言が所望の文言と一致していることの確認が必要です。

このため、一度ボタンのsourceIndexを取得してその手前の要素を参照する必要があります。
これ以外のアルゴリズムもいくつか試しましたが、ぱっとするものは見当たりません。
よろしくお願いします。

検索用キーワード:objIE, objDOC, EXCEL VBA, マクロ

●質問者: id0010
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

sourceIndex を取得する方法ではありませんが。

所望のボタン部分の生成がAjax的に動的に表示をしているせいか、
objIE.Document.all.Item("ボタンの名前")
の取得が失敗します(objIE.Refresh等の後waitを挟んでもダメ)。

all コレクションを使うのではなく、getElementById メソッドか、getElementsByName を使えば大丈夫なはずです。

押したいボタンに id 属性がついているなら、こっちを推奨。

' id 属性を指定する
Set btn = objIE.Document.getElementById("button01")

getElementsByName は、複数の s がついてる通り、コレクションを返します。
name 属性がユニークだったら、こんな感じでいけるはず。

' name 属性を指定する
Set btn = objIE.Document.getElementsByName("button01").Item(0)

id0010さんのコメント
ありがとうございます。 ご指摘のコードで確かにコレクションが得られました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ