プロが教える店舗&オフィスのセキュリティ対策術

下記のマクロは『範囲指定したURL先のサイトタイトルを取得する』というものです。

このマクロはサイトタイトルを取得できるのですが、
結構重くなりますし、サイトタイトルも数秒に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

質問者からの補足コメント

  • 回答ありがとうございます。

    こちらのマクロは、かなり前に書いてもらったもので、
    私自身、マクロについて詳しくないです。

    Application.ScreenUpdating = False
    は、どこの部分に記述するのがいいでしょうか?
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/06/12 22:39

A 回答 (3件)

ハード的なのかソフト(常駐ソフト含む)の影響もあるのでは?


例えばページを開く際にウィルスなどのチェックをするようだと、それが頻繁に行われれば遅くなりそうですし。

私もVBやC#などでのマルチスレッド処理が良いように思えます。
CPUコアが1つって訳ではないなら、Excelですと仮に4つコアがあっても1つが仕事中で3つはサボっている感じになります。
それを4つとか同時に(均等に)処理させる手段を取るのが1つでやるより効率よさそうですし。
    • good
    • 0

Application.ScreenUpdating = False

この回答への補足あり
    • good
    • 0

こんばんは



通信待ちの時間がほとんどを占めているのでしょうから、仮に、マクロが速くなったとしても、ほとんど変わらないと思いますけれど?

VBAではなく、マルチスレッドで処理できるような仕組みにすれば改善する可能性はあるかも。
あるいは、あきらめて空き時間(夜間とか)にのんびりと処理するとか…
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!