とあるサイトで
'---コード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で質問しましょう!
似たような質問が見つかりました
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:00
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- Visual Basic(VBA) VBA初心者です。 VBAで行単位で条件付き書式の色をカウントしたいです。 大量のデータがあるExc 3 2022/06/08 10:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- その他(プログラミング・Web制作) seleniumbasic chrome操作について 1 2023/03/29 15:40
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 13:13
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでXMLを出力するプログラム...
-
XPathで途中に名前空間が設定さ...
-
XMLDocumentでスキーマを無視し...
-
VBAでXML文書のある特定タグ以...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
VB6.0でDOMを使用して...
-
Excel-VBAでXMLの複数ノードの...
-
バッチファイルでテキストファ...
-
XMLで要素が記述された順番に意...
-
VB6でXMLを処理するには
-
VBSでxmlの値を書き換えたい
-
UTF-8でエンコーディングとはど...
-
SNMP リンクダウンとノードダ...
-
xmlファイルが上手にHTMLに変換...
-
あるノードリストに、特定の名...
-
MSXMLを使ってノードを削除した...
-
MFCでのタブコントロールに...
-
xmlのテキストにリンクを張りた...
-
GoogleマップでKMLが読み込めない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XPathで途中に名前空間が設定さ...
-
VBAでXMLを出力するプログラム...
-
XMLファイル内のデータ(値)を変...
-
VB6でXMLを作成しているのです...
-
VBAでXML文書のある特定タグ以...
-
XMLDocumentでスキーマを無視し...
-
WebBrowser1.Document.Body.Inn...
-
XMLの要素の内容の中に要素
-
エクセルVBA ウェブ上のボタ...
-
XmlをDetaSetに読み込んだ場合...
-
LoadCML
-
C#でXMLファイルの情報にアクセ...
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
昔Winnyってありましたけど、あ...
-
UTF-8でエンコーディングとはど...
-
バッチファイルでテキストファ...
-
ルート要素ノードが2個ある場合?
-
Excel-VBAでXMLの複数ノードの...
おすすめ情報