VBAのIEで画面をスクロールする方法について
未読分:4件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#4 2014年9月7日(日)18時34分 From: 管理人 | 返事 削除 変更 |
自動スクロールについてまとめてみました。 http://www.vba-ie.net/ie/iescroll.html |
Message#3 2014年9月2日(火)17時22分 From: みるめーく | 返事 削除 変更 |
管理人のメッセージ(#2)への返事 ありがとうございます! うまくいきました! |
Message#2 2014年9月2日(火)16時20分 From: 管理人 | 返事 削除 変更 |
みるめーくのメッセージ(#1)への返事 > VBAでブラウザを開くまではできたのですが、ページの最後までスクロールするにはどうしたらいいでしょうか? まず、ページの高さを取得します。 その後にjavaScriptのscrollToメソッドを利用して、スクロール位置を指定座標へ移動します。 そして、VBAのIEオブジェクトのDocument.Script.setTimeout で実行するとスクロールすることができます。 scrollTo(X座標, Y座標),処理待ち時間 X座標は0でY座標にページの高さを設定すれば、最下部まで移動してくれます。 pageHeight(ページの高さ)=objIE.document.body.scrollheight 1000は実行までの処理待ち時間になります。1000は1秒ですので、1秒後にスクロール処理をしています。 sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.visible = True objIE.navigate "http://www.vba-ie.net/" Do DoEvents() Loop While objIE.busy or objIE.readyState <> 4 pageHeight = objIE.document.body.scrollheight objIE.Document.Script.setTimeout "javascript:scrollTo(0," & pageHeight & ");",1000 End Sub ツイッターページなどスクロールが延々と続くようなサイトでスクロールしたい場合はループ処理で対応できます。 こちらでは、10回ループ処理させていますが、ループ処理の待ち時間はjavascriptの待ち時間より長く設定してください。 javascritの待ち時間が長ければ、ループ処理が早く終わってしまうので、正常に処理されません。 必ず間を空けて処理してみてください。 #If VBA7 Then Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr) #Else Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long) #End If sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.visible = True objIE.navigate "http://www.vba-ie.net/" Do DoEvents() Loop While objIE.busy or objIE.readyState <> 4 pageHeight = objIE.document.body.scrollheight For i = 1 To 10 objIE.Document.Script.setTimeout "javascript:scrollTo(0," & pageHeight & ");",1000 sleep 2000 Next i End Sub |
Message#1 2014年9月1日(月)10時16分 From: みるめーく | 返事 削除 変更 |
VBAでブラウザを開くまではできたのですが、ページの最後までスクロールするにはどうしたらいいでしょうか? |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降