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

下記のマクロは、
A列にあるURLがSSL化(https)されているかを調べるものです。
このマクロで、いろんなURLを調べる作業があります。
その作業を早く完了させるために、下記のマクロを同時に動かそうと思っています。

しかし、エクセルを使えるPCが1つしかありません。


エクセルを2つ起動して、調べるURLを分けて、
2つのエクセルでマクロを同時に動かす。

これをやろうと思いましたが、かなりPCが重くなるし、
エクセルが度々フリーズしたみたいになります。

どうにか、1つのPCで下記のマクロを複数動かして、
いろんなURLを調べる作業を、早くに完了する方法はありますでしょうか?

エクセル2016です。
よろしくお願いいたします。


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

gooドクター

A 回答 (1件)

下記情報から、WinHttpはスレッド毎の独立動作を


実現している様です。
https://issues-world.com/winhttp/

であるならば、例えばVB6で類似のコードを書き、
複数プロセスで実行すれば並列処理が可能な様に思います。

つまり、Excelを使う事そのものに原因があるのだろうという推測です。
ただし、WinHttpが不都合の原因であるか否かは、
例えばWinHttp関連の関数をコメントにして実行する等して
検証する必要が有るかも知れません。

上記で、仮にWinHttpが不都合の原因である場合に
質問文の条件での並列動作の実現。

それは結論として、とんちの様になりますが、
VMを用いて1つの物理PCを複数の論理PCにする事で
可能になると考えます。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング