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

下記のマクロは、
A列にあるURLがSSL化(https)されているかを調べるものです。

このマクロを動かすと、大体3秒に1つのURLを調べるくらいの早さです。
もっと早く調べられるようにするには、どのような記述にすればできるでしょうか?

また、エクセルの他の設定で、マクロを早くできたりしますか?
よろしくお願いいたします。


Sub SSL()
Dim objHttp As Object
Dim nURL As String
Dim strURL As String
Dim i As Long, f As String, l As String
Dim Lastrow As Long, getLine As Long
Set objHttp = CreateObject("WinHttp.WinHttpRequest.5.1")

On Error GoTo ErrHandler
'A1から
getLine = Cells(Rows.Count, 2).End(xlUp).Row
Lastrow = Cells(Rows.Count, 1).End(xlUp).Row
If getLine = Lastrow Then MsgBox "既に終わっているか、データがないです。", vbExclamation: Exit Sub
If getLine < Lastrow And Cells(1, 2).Value <> "" Then
getLine = getLine + 1
Else
getLine = 1 '最初の行が1行目からの場合
End If
For i = getLine To Lastrow
strURL = LCase(Trim(Cells(i, 1).Value)) 'A列の登録URL
strURL = Replace(strURL, "https:", "http:")
If strURL Like "http*" Then
objHttp.Open "GET", strURL, False
objHttp.send
DoEvents 'ESC割り込み可能にする
With objHttp
If .Status = 200 Then
nURL = .Option(1) 'WinHttpRequestOption_URL
f = Mid(strURL, 1, InStr(strURL, "://"))
l = Mid(nURL, 1, InStr(nURL, "://"))
If nURL = "" Then
Cells(i, 2).Value = "no URL"
ElseIf nURL <> "" Then
If LCase(f) = LCase(l) Then
Cells(i, 2).Value = "non SSL"
Else
Cells(i, 2).Value = "https"
End If
End If
Else
Cells(i, 2).Value = "Err:" & .Status
End If
End With
End If
Endline:
nURL = ""
strURL = ""
Next i
MsgBox "Finished"
Exit Sub
ErrHandler:
If Err() <> 0 Then
Cells(i, 2).Value = Err.Number 'マイナスになるのは外部エラー
GoTo Endline
End If
End Sub

A 回答 (1件)

初級レベルなジジィですので絶対違うかも知れませんが気になりましたので。



マクロのコードによって遅くなっているのでしょうか?
確かにA列にデータが多いなら画面の更新停止・再開のコードを最初と最後にそれぞれ書くのも手かも知れません。
けどその前にサイトへのアクセス・サイト側での処理とかも影響ありそうにも感じますけど、そこは絶対的に時間がかからないと検証済みなのですか?
サイトによっては不正アクセス(短時間での繰り返し)に対処している場合もあるかもですし、Serverで接続数に制限をかけてる可能性も否定出来るのかな?とも思います。

昭和ジジィの戯言ですけどね。
    • good
    • 0

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