Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


876 / 13645 ツリー ←次へ | 前へ→

【77784】IE操作におけるテーブル行の選択について 失礼します 15/12/22(火) 11:13 質問[未読]
【77790】Re:IE操作におけるテーブル行の選択について γ 15/12/22(火) 21:21 発言[未読]
【77800】Re:IE操作におけるテーブル行の選択について 失礼します 15/12/24(木) 11:00 お礼[未読]

【77784】IE操作におけるテーブル行の選択について
質問  失礼します  - 15/12/22(火) 11:13 -

引用なし
パスワード
   質問失礼いたします。

Web画面上において、

【スクロールテーブルの中から一行選択】

といった処理を行おうとしております。

Javascriptで記述されているページのBodyのinnnerHTMLを調査した結果、以下のような構造をしているようです。

<TABLE>
 <TR>
  <TD>
   <SPAN>AAA</SPAN>
  </TD>
   …
 </TR>
  …
</TABLE>

ここで、「AAA」の文字列を含まれる行をクリックして選択状態としたいのですが、
以下のような手段を試したものの選択状態とはならず、困っております。

1. タグを"SPAN"で検索し要素に対してFor文を回して"AAA"に該当するSPANをClick()

(例)
 Dim objTag As Object
 For Each objTag In objIE.document.all.tags("SPAN")
  If objTag.innerText = "AAA" Then
    objTag.Click
    Exit For
  End If
 Next objTag

 '※getElementsByTagNameも同様にして試行

2. 該当SPANを含むTRオブジェクトに対してClick()

(例)
 Dim flg As Boolean = False
 Dim objRow As Object
 For Each objRow In objTable.getElementsByTagName("TR")
  Dim objSpan As Object
  For Each objSpan In objRow.getElementsByTagName("SPAN")
   If objSpan.innerText = "AAA" Then
    objRow.Click
    flg = True
    Exit For
   End If
  Next objSpan
  If flag Then Exit For
 Next objSpan

Clickイベントでは選択してフォーカスを当てることが出来ない仕様なのか。。。と悩んでおります。

もし、Objectプロパティの値を書き換えれば済むなど別の方法があればご教示頂けませんでしょうか。

拙い質問で申し訳ありませんが、どうぞよろしくお願いいたします。

【77790】Re:IE操作におけるテーブル行の選択につ...
発言  γ  - 15/12/22(火) 21:21 -

引用なし
パスワード
   回答ではないのですが。

仮に選択できたとして、その後何をしようとされていますか?
その行をどこかにコピーペイストしたいとか、ですか?
選択しなくても、なんらかの方法でそれが特定できるならOKとはなりませんか?

【77800】Re:IE操作におけるテーブル行の選択につ...
お礼  失礼します  - 15/12/24(木) 11:00 -

引用なし
パスワード
   ▼γ様

ご質問を頂きありがとうございます。

回答が遅れ、質問内容に情報が不足しており、
大変申し訳ありませんでした。

選択後に期待する動作といたしまして、「OK」ボタンをクリックすることにより、選択したデータを保持したまま次の画面へと遷移する、ということを考えておりました。
そのため、行を選択状態にしないと期待した動作が得られないという状況でありました。

その後、無事、解決致しましたので以下に備忘として記載させて頂きます。

============================

マウスでクリックをした際にはHTMLが書き換わるように実装されていたようで、
HTMLにおけるTRタグのClassNameに「Selected」の文字列が設定されるようになっていました。

そのため、VBA上でもClickイベントを発生させるのではなく、
直接ClassNameプロパティに「Selected」を設定することで
期待した動作を得られるようになりました。

============================

手を尽くし切れていない状態で質問を投稿してしまい申し訳ありませんでした。

また、拙い質問にお付き合い頂きありがとうございました。

876 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free