閲覧ありがとうございます。
質問内容は大凡タイトル通りです。
マクロ概要
ニコニコ動画の広告ページをVBAで開き、広告したユーザー名を読み込んでセルに入れていきます。
問題点
現在ニコニコ動画の広告ページは広告回数が100回を超すと、古いユーザー名を格納しHTMLに表示されない仕様になっています。(ブラウザで開き最下までスクロールすれば読み込まれ表示される。)
その為、HTMLからそのまま取得すると100回分までしか取得できません
下記のコードはセルに入れる機構はありませんが、読み込んだclass属性をメッセージボックスで表示するようになっています。
参考URLを2つ用意したので、試す場合どちらかを有効にして下さい。
広告者数が100回未満の場合はメッセージボックスが開き、全ての広告者を表示し終了します。
広告者数が100回を超す場合は、ループの上限を決めているID属性の数値と一致するclass属性がHTML上に存在しない為、実行直後にエラーが発生します。
100回を超す場合でも全てのユーザー名を取得するにはどうすれば良いでしょうか。ご教授お願いします。
VBA
1Sub TestIE() 2 3Dim CountI As Integer 4Dim objIE As InternetExplorer 5Set objIE = CreateObject("Internetexplorer.Application") 6 7'どちらかのURLを有効化して下さい。 8'objIE.navigate "http://uad.nicovideo.jp/ads/?vid=sm30379625" '広告回数が100回以下の場合 9'objIE.navigate "http://uad.nicovideo.jp/ads/?vid=sm30468800" '広告回数が100回を超す場合 10 11Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 12 13 DoEvents 14 15Loop 16 17CountI = objIE.document.getElementById("histry-0").innerText 18 19Do While CountI > 0 20 21 MsgBox objIE.document.getElementsByClassName("history-row")(CountI).outerHTML 22 CountI = CountI - 1 23 24Loop 25 26End Sub
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。