

とあるサイトで
'---コード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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No2です
>〈p class="hinban"〉
>〈a helf="hogehoge"〉ほげ〈/a〉
>クラス名で検索して、リンクをクリックなんてできるのでしょうか。
idのような一意で決まる特徴がないので、他との関係にもよりますが・・・
Document.querySelector("p.hidden a")
のような感じで取得できる可能性が高いのではないかと思います。
querySelector( selector )
メソッドでは、CSSセレクタと同じセレクタ指定で、要素(複数該当する場合は最初のもの)を取得できます。
対象要素が存在するかどうかわからない場合は、そのまま属性値を読もうとしたりするとエラーになりますので、No1にも挙げておいたように、利用する前に「要素が取得できているかのチェック」を行うようにした方が宜しいでしょう。
No.2
- 回答日時:
No1です
連投失礼。
よくよくみたら、
<li id="hoge">
<a href="hogefuga">fugafuga</a>
</li>
となっている際の、リンク要素をクリックしたいということなのかも・・・
idで検索することは変わりませんが、そのような場合は(リスト内の最初のリンクで良いものと仮定して)
objIE.Document.querySelector("#hoge a").Click
ですね。
ありがとうございます!
ハチャメチャですよね・・申し訳ございません。
お教えいただいた、内容でやってみたのですが、エラーにはならなかったのですが、希望のところをクリックされず、そのままでした。
おおもとの参考にしたサイトをもう一度みてその通り、別の例でやってみたら、うまくいったので、
私が希望しているクリックしたい個所の指定が間違っていたようです。
調べなおした結果、「ID=い」ではなかったようです。
そもそもが間違っており、誠に申し訳ないです。
〈p class="hinban"〉
〈a helf="hogehoge"〉ほげ〈/a〉
クラス名で検索して、リンクをクリックなんてできるのでしょうか。
No.1
- 回答日時:
こんにちは
ご例示の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かも。未検証なのであやふやで失礼)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XMLファイル内のデータ(値)を変...
-
VB6でXMLを作成しているのです...
-
XPathで途中に名前空間が設定さ...
-
C#でXMLの読み取り書き取りにつ...
-
XMLDocumentでスキーマを無視し...
-
C# もしくはVB
-
C# GetElementsByTagNameで取得...
-
XMLの要素の内容の中に要素
-
XPATHについての質問です。以下...
-
VBAでXML文書のある特定タグ以...
-
東芝のDynabookなのですがアン...
-
ノードの並び替え
-
ツリービューのノードをダブル...
-
大規模行列の計算
-
XSLT
-
CPUの考え方を教えてください ...
-
4バイトを10進数に変換する方法
-
HTTPステータス 404 - There is...
-
特殊記号が勝手にエスケープさ...
-
XML、XSLTの適応エラー(IEから...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
XMLファイル内のデータ(値)を変...
-
VBAでXMLを出力するプログラム...
-
VBAでXML文書のある特定タグ以...
-
VB6でXMLを作成しているのです...
-
エクセルVBA ウェブ上のボタ...
-
C#でXMLファイルの情報にアクセ...
-
XMLをXSLTで変換するとき、XML...
-
XMLの要素の内容の中に要素
-
XML文のid属性とclass属性について
-
C# GetElementsByTagNameで取得...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
ルート要素ノードが2個ある場合?
-
SNMP リンクダウンとノードダ...
-
XMLで要素が記述された順番に意...
-
Excel-VBAでXMLの複数ノードの...
-
複数のマックPCによる数値計算...
-
XML、XSLTの適応エラー(IEから...
-
バッチファイルでテキストファ...
おすすめ情報