下記のマクロは、
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件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
初級レベルなジジィですので絶対違うかも知れませんが気になりましたので。
マクロのコードによって遅くなっているのでしょうか?
確かにA列にデータが多いなら画面の更新停止・再開のコードを最初と最後にそれぞれ書くのも手かも知れません。
けどその前にサイトへのアクセス・サイト側での処理とかも影響ありそうにも感じますけど、そこは絶対的に時間がかからないと検証済みなのですか?
サイトによっては不正アクセス(短時間での繰り返し)に対処している場合もあるかもですし、Serverで接続数に制限をかけてる可能性も否定出来るのかな?とも思います。
昭和ジジィの戯言ですけどね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) ローマ字、ハイフン付きの並び替え ローマ字抽出方法 Excelマクロ 4 2022/04/01 14:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
EXCELのVBAでRange("A1:C4")を...
-
ExcelのVBA。public変数の値が...
-
一つのTeratermのマクロで複数...
-
マクロの連続実行
-
TERA TERMを隠す方法
-
Excel VBAからAccessマクロを実...
-
ピボットテーブルでの毎回可変...
-
VBAのIF分で時間指定の条件式の...
-
OnTimeを使ったのですが「エラ...
-
エクセルでキーリストからデー...
-
TeraTermマクロの文字列結合
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
VBA初心者 Ctrl+での操作、ボタ...
-
EXCELのマクロの重複起動...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
他人が作ったマクロの理解
-
ExcelVBAでPDFを閉じるソース
-
TERA TERMを隠す方法
-
エクセルで別のセルにあるふり...
-
マクロ実行時、ユーザーフォー...
-
Excel VBAからAccessマクロを実...
-
EXCELのVBAでRange("A1:C4")を...
-
TeraTermマクロの文字列結合
-
PDF出力マクロについて。マクロ...
-
#defineの定数を文字列として読...
-
エクセルのマクロをセルの値に...
-
wordを起動した際に特定のペー...
おすすめ情報