• 締切済み

サイトタイトルを取得するマクロを最速化

下記のマクロは、サイトタイトルを取得するマクロです。 このマクロで、サイトタイトルを取得していましたが、 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

みんなの回答

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.2

まずは基本としてこの辺りを。 無駄なイベント類を停止させるのは高速化の定石です。ただしマクロ終了時に再開させておくのを忘れずに。 http://dev-clips.com/clip/vba/improve-performance-property/ コードの改良に関しては、実際にマクロを試していないので、あくまで勘のレベルですが Tcel.Offset(, 1) = ObjIE.document.Title の辺りがクサイかなー、と思います。一旦文字列型の変数にdocument.Titleを入れて、その変数をセルに書き込んだ方がいいような。 ただ今回のマクロで時間がかかるのは「サイト開く」「サイトタイトル取得」「サイトタイトル書き込む」のどれかだろうと思います。一度ステップインで一行ずつ実行して、どの部分で時間がかかっているのか把握した方が、問題は切り分けやすいかと思います。

mute_low
質問者

お礼

kon555さん、回答ありがとうございます! https://so-zou.jp/software/tech/programming/vba/sample/web.htm 少し調べましたら、上記URLの「XMLHTTPオブジェクト」に変更すると、 高速化できるらしいのですが、その変更をどのようにすればいいか分かりません。 InternetExplorerオブジェクト ↓ XMLHTTPオブジェクト へと変更するのは、どのような記述になるでしょうか?

noname#252332
noname#252332
回答No.1