- 締切済み
サイトタイトルを取得するマクロを最速化
下記のマクロは、サイトタイトルを取得するマクロです。 このマクロで、サイトタイトルを取得していましたが、 5秒に1つくらいのペースなので、もっとスピードを上げたいと思っています。 最速化するには、どこか修正した方が良い箇所はあるでしょうか? また、変更するべき設定などもあったりするでしょうか? よろしくお願いいたします Sub sample() Dim Carea As Range Set Carea = Selection If Carea(1).Value = "" Then Exit Sub Dim Tcel As Range Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.Application") For Each Tcel In Carea ObjIE.Navigate Tcel.Value Do While ObjIE.Busy = True Or ObjIE.readyState <> 4 DoEvents Loop Tcel.Offset(, 1) = ObjIE.document.Title Next ObjIE.Quit Set ObjIE = Nothing End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kon555
- ベストアンサー率51% (1844/3562)
まずは基本としてこの辺りを。 無駄なイベント類を停止させるのは高速化の定石です。ただしマクロ終了時に再開させておくのを忘れずに。 http://dev-clips.com/clip/vba/improve-performance-property/ コードの改良に関しては、実際にマクロを試していないので、あくまで勘のレベルですが Tcel.Offset(, 1) = ObjIE.document.Title の辺りがクサイかなー、と思います。一旦文字列型の変数にdocument.Titleを入れて、その変数をセルに書き込んだ方がいいような。 ただ今回のマクロで時間がかかるのは「サイト開く」「サイトタイトル取得」「サイトタイトル書き込む」のどれかだろうと思います。一度ステップインで一行ずつ実行して、どの部分で時間がかかっているのか把握した方が、問題は切り分けやすいかと思います。
お礼
kon555さん、回答ありがとうございます! https://so-zou.jp/software/tech/programming/vba/sample/web.htm 少し調べましたら、上記URLの「XMLHTTPオブジェクト」に変更すると、 高速化できるらしいのですが、その変更をどのようにすればいいか分かりません。 InternetExplorerオブジェクト ↓ XMLHTTPオブジェクト へと変更するのは、どのような記述になるでしょうか?