dポイントプレゼントキャンペーン実施中!

とあるサイトで
'---コード4|ウェブ上のボタンを自動でクリックして次へ---
Dim objtsugi As Object
For Each objtsugi In objIE.Document.getElementsByTagName("a")
If InStr(objtsugi.outerHTML, "次のページ") > 0 Then
objtsugi.Click
End If
Next
を見かけ、使いやすいように変更しようとしたのですが、うまくいきません。
こちら、VBA初心者で、いつも見かけたVBAをところどころ変更して使っています。

例題では、この”a”の部分に”次のページ”の文字が含まれていることが前提なのですが、
私がつかいたいサイトでは、
<li class="あ" id="い" >
<a href="うurl=えお=色々">
 </a></li>
となっており、上記のようなキーワードが含まれていません。
直接、If InStr(objtsugi.outerHTML, "うurl=えお") > 0 Then
など試してみましたが、うまくいきません。
「色々」のところはマクロを実行する際に代わっていきます。

変数が~や、要素が~など言われても、よくわかっていません。

私としては、「 id="い"」というのが含まれていたら、
「a href="うurl=えお=色々"をクリックする」というようにしたいです。
※「class="あ"」だと、他にも「a href="」が使用されているため。

このような情報で何かうまくいく方法はありますでしょうか?
ご教示いただけたら幸いです。
よろしくお願いいたします。

A 回答 (3件)

No2です



>〈p class="hinban"〉
>〈a helf="hogehoge"〉ほげ〈/a〉
>クラス名で検索して、リンクをクリックなんてできるのでしょうか。
idのような一意で決まる特徴がないので、他との関係にもよりますが・・・
 Document.querySelector("p.hidden a")
のような感じで取得できる可能性が高いのではないかと思います。

 querySelector( selector )
メソッドでは、CSSセレクタと同じセレクタ指定で、要素(複数該当する場合は最初のもの)を取得できます。

対象要素が存在するかどうかわからない場合は、そのまま属性値を読もうとしたりするとエラーになりますので、No1にも挙げておいたように、利用する前に「要素が取得できているかのチェック」を行うようにした方が宜しいでしょう。
    • good
    • 0

No1です


連投失礼。

よくよくみたら、
 <li id="hoge">
  <a href="hogefuga">fugafuga</a>
 </li>
となっている際の、リンク要素をクリックしたいということなのかも・・・

idで検索することは変わりませんが、そのような場合は(リスト内の最初のリンクで良いものと仮定して)
 objIE.Document.querySelector("#hoge a").Click
ですね。
    • good
    • 0
この回答へのお礼

ありがとうございます!
ハチャメチャですよね・・申し訳ございません。

お教えいただいた、内容でやってみたのですが、エラーにはならなかったのですが、希望のところをクリックされず、そのままでした。

おおもとの参考にしたサイトをもう一度みてその通り、別の例でやってみたら、うまくいったので、
私が希望しているクリックしたい個所の指定が間違っていたようです。

調べなおした結果、「ID=い」ではなかったようです。
そもそもが間違っており、誠に申し訳ないです。

〈p class="hinban"〉
〈a helf="hogehoge"〉ほげ〈/a〉

クラス名で検索して、リンクをクリックなんてできるのでしょうか。

お礼日時:2019/05/31 15:40

こんにちは



ご例示のHTMLがハチャメチャなのでよくわかりませんが・・・

>私としては、「 id="い"」というのが含まれていたら、
>「a href="うurl=えお=色々"をクリックする」というようにしたいです。
 『idが"い"という要素を取得してクリックする』
ことと解釈しました。
idは1文書内に一意の属性なので、これを基に検索するのが簡単だと思います。


検証はしていませんが、Documentがすでに取得できているものと仮定して
 objIE.Document.getElementById("い").Click
で可能ではないかと。

要素の存在チェックが必要な場合は
 Dim obj As Object
 Set obj = objIE.Document.getElementById("い")
If obj Then obj.Click
みたいな感じ。

※ VBAの場合だと、objの存在チェックは
 If Not obj Is Nothing Then ~~
かも知れません。(NothingはNullかも。未検証なのであやふやで失礼)
    • good
    • 0
この回答へのお礼

このようなハチャメチャな文章に回答いただき、誠にありがとうございます。
感謝でいっぱいです!!

お礼日時:2019/05/31 15:40

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