テストページ
http://oct2011.s2008day.com/test.html
を表示後、
文字列を置き換え、Div id=xxxxのタグを追加する。
id=xxxxの.offsetTopを取得してから、
JavaScriptのscrollToでスクロールさせる
そんなテスト動画です。
ソースコード
Option Explicit 'ページを表示させ、指定位置にスクロールさせるテスト 'strBODY = objIE.Document.body.InnerHTML で変数に入れて 'Replaceで div id=xxxx を追加 'id=xxxx の.offsetTop を取得後、scrollToでスクロールさせる Sub ie_scroll_test_1017() 'IEの起動 Dim objIE As Object '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://oct2011.s2008day.com/test.html" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 DoEvents '重いので嫌いな人居るけど。 Wend 'ページのスクロールテスト 'BodyのHTMLを書き換える 自分で決めたid を <divでまず追加する Dim strBODY As String strBODY = objIE.Document.body.InnerHTML '変数に代入 strBODY = Replace(strBODY, "秦佐和子", "<div id=hata>秦佐和子</div>") '秦にid=hataを付ける objIE.Document.body.InnerHTML = strBODY 'データをセットする DoEvents '↑Body全体を読み込んで、一部を書き換え、また全体に代入しただけです・・・ '次に、追加したidに対して処理を行う(a アンカーのほうがよかったかもと思いつつ) '(表示位置を調整する) Dim y As Long Debug.Print objIE.Document.getElementById("hata").offsetTop y = objIE.Document.getElementById("hata").offsetTop 'スクロール位置を保存する 'javascriptのscrollToを呼ぶ(※IEのWindowの指定がわからなかったので、苦肉の策) objIE.Document.Script.setTimeout "javascript:scrollTo(0," & y & ");", 1000 '↑こんな感じでJavaScriptを混ぜることができるので、 'VBAの処理に困ったら、javascript側から攻めてみては・・・・ End Sub
テスト結果と簡単な解説動画
三流君 IE操作 VBA DIVタグを追加して、.offsetTop分scrollToでスクロール - YouTubewww.youtube.com