質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

255閲覧

VBAによるIE自動操作

33sansan

総合スコア2

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/07/24 13:17

Sub ie_test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.yahoo.co.jp/" While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> DoEvents Wend objIE.Document.getElementByid("tabTopics3").Click End Sub

VBAの初心者です。
Yahooのホームページにある「エンタメ」の要素を取得してクリックしたいのですが、上手くいきません。
記載したコードでは、どこがダメなのでしょうか。Yahooのサイトが表示されるだけで、エラーメッセージすら出てきません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

technocoreさんがコメントされた 全てのAタグ要素を取り出す方法 を実装しました。
[Microsoft HTML Object Library] の参照設定が必要となります。

VBA

1'[Microsoft HTML Object Library] の参照設定が必要 2Dim aElem As MSHTML.HTMLAnchorElement 3 4'Aタグを順番に調べる 5For Each aElem In objIE.Document.getElementsByTagName("A") 6 If aElem.hasAttribute("href") Then 7 Debug.Print aElem.Attributes("href").Value 8 If InStr(1, aElem.innerHTML, "エンタメ") > 0 Then 9 '「エンタメ」ページへ遷移 10 objIE.Navigate aElem.Attributes("href").Value 11 Exit For 12 End If 13 End If 14Next aElem

投稿2020/07/25 02:25

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

33sansan

2020/07/25 12:26

ありがとうございます。 無事にエンタメを選ぶことができました。
guest

0

YahooのHTMLをみると、「tabTopics3」はliタグを指すIDです。
liタグはClickできません。
「エンタメ」のAタグを特定してClickを実行してください。

HTML

1<li id="tabTopics3" class="_3bryYR6xkbIHcdZdbybgnd ENXbYBReWSw0fU0fDUlIP" role="tab" aria-selected="false"><a class="_1fWTm2E47ymhMM3suCaCGi rapidnofollow" data-ylk="rsec:tpen;slk:tab;pos:0;type:switch" href="https://news.yahoo.co.jp/categories/entertainment" data-rapid_p="3">エンタメ</a></li>

投稿2020/07/24 15:03

technocore

総合スコア7337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

33sansan

2020/07/24 17:02

お返事ありがとうございます。 objIE.Document.getelementsbytagname("a")(0).Click 上記のようなコードは知っているのですが、たくさんあるAタグの中からエンタメのAタグを取得するにはどのようなコードにすれば良いかご教示いただけないでしょうか。
technocore

2020/07/24 22:37

getElementsByTagName("A")で全てのAタグ要素を取り出せます。 for eachで一つずつ取り出してその中から、innerTextが「エンタメ」のAタグを特定すれば良いです。 特定できなかった時の処理もあればベストです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問