No.1
- 回答日時:
できました。
標準モジュールに以下のコードを記載し、
B2セルから下にチェックしたいURLを並べて実行してください。
URLはハイパーリンクでなくても構いません。
Sub test()
Dim req
Dim MyUrl As String
Dim cnt As Long
Dim i As Long
Dim MyRng As Range
Set req = CreateObject("Microsoft.XMLHTTP")
cnt = Cells(2, 2).CurrentRegion.Rows.Count
For i = 1 To cnt
Set MyRng = Range("B2").Cells(i, 1)
MyUrl = MyRng.Value
req.Open "GET", MyUrl, False
req.Send
' Debug.Print req.Status
If Not (req.Status >= 200 And req.Status < 300) Then
MyRng.Cells(1, 2).Value = "×"
Else
MyRng.Cells(1, 2).Value = "◯"
End If
Next i
End Sub
参考にさせていただいたページ
http://www.excel.studio-kazu.jp/kw/2010072916151 …
http://www.excel.studio-kazu.jp/kw/2005092716325 …
http://www.relief.jp/itnote/archives/excel-vba-c …
No.2ベストアンサー
- 回答日時:
誰もレスを付けないと思いましたので、こちらでも作りましたのでアップしておきます。
#1の方とは、少し意味が違う部分があるかと思います。
以前、ここの掲示板で出したことがあると思うのですが、もう見つかりません。
一応、今回は、自分用で作ってみました。プロバイダからクレームが付きそうな気がしましたが、実行してしまいました。常識の範囲でお使いください。あまり速くはありませんが、ハングはしませんでした。
リンク先のチェックは、838件を一気にチェックしてしまいましたが、これほどはやらないほうが良いかもしれません。100件やって休むとかしたほうが良いような気がします。
ユーザー定義関数の戻り値は、いくつかあります。ステータス200は、◯ですが、その他は、種類がいろいろありますので、×にせずに数値や文字にしました。基本的に、ステータスコードの200は、全部返しました。
数字については、ステータス・コード表をごらんになってください。
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/status …
例:
404 サイトがなくなっています。
403 アクセス権限がないということですから、ログインしなければ分からないかもしれません。
他にも、いくつか種類が出てきます。
n.a と出るのは、サーバーが受け付けないものだと思います。
アンチウィルスソフトで、禁止区域に入った時は、メッセージが出てきました。しかし、そのままで続いていきます。
このマクロ使用中でも、スクロールは可能です。
場所は標準モジュールです。
''//--
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private objHTTP As Object
Sub Main_URLChecking()
Dim c As Range
Dim i As Long
''Microsoft WinHTTP Service, version 5.1 '参照設定する場合
''Set objHTTP=New winHttp.WinHttpRequest '
For Each c In Range("B2", Cells(Rows.Count, 2).End(xlUp))
If LCase(c.Value) Like "http://*" Then
c.Offset(, 1).Value = CheckURL(c.Value)
Sleep 200 'Wait を掛ける
DoEvents 'ESCで離脱できるようにする。
End If
Next
Set objHTTP = Nothing
End Sub
Function CheckURL(ByVal strURL As String) As Variant
Dim num As Variant
On Error GoTo ErrHandler
If objHTTP Is Nothing Then
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
End If
objHTTP.Open "GET", strURL, False
objHTTP.Send
If objHTTP.Status = 200 Then
CheckURL = "◯"
Else
CheckURL = objHTTP.Status
End If
Exit Function
ErrHandler:
If Err() <> 0 Then
CheckURL = "n.a"
End If
End Function
''//--
なお、今度は、これを、ハイパーリンクのリストに反映しないといけないのかな?
ご回答ありがとうございます。
無事に処理することが出来ました。
マクロ使用中でもスクロール出来るのはすごく良かったです。
大変助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA リンク更新について A、B、Cのファイルかあります。 (Aファイルのリンク元Bフ 1 2022/09/21 13:40
- Excel(エクセル) フォルダ内のエクセルファイルを開かずにデータ採取する関数式 2 2022/12/22 22:15
- Visual Basic(VBA) エクセルでフォームのチェックボックスを使用した日付表示切替を作りたい 3 2023/07/11 10:47
- その他(ブログ) なぜ、ホームページが削除されても、そのホームページ上の画像のリンク先がリンク切れになる場合 5 2023/07/15 10:24
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) 「Excelのオプション」の「ユーザーインターフェイスのオプション」の設定値をVBAで取得したい 1 2022/07/31 23:49
- Chrome(クローム) ホームページ掲載の複数のリンクのリンク切れを全部簡単にチェックする方法ないですか? 1 2023/06/02 05:16
- Excel(エクセル) Excel2019 マクロを使用し画像を貼り付けした際のリンク切れについて 2 2022/11/15 16:14
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
URLのリンク切れをマクロを使って表示する方法を教えてください。
その他(プログラミング・Web制作)
-
リンク切れチェックを行うマクロ
Excel(エクセル)
-
【エクセル】ハイパーリンク先のチェック
Excel(エクセル)
-
-
4
EXCEL2000VBAでハイパーリンクの有無を調べたい。
Excel(エクセル)
-
5
VBAで有効なURLのみ抽出する方法
Excel(エクセル)
-
6
EXCEL VBAで、URLを入力して、そのURLが存在するかどうか調べるような命令はあるでしょうか。
Visual Basic(VBA)
-
7
EXCEL VBAでたくさんのURLの一覧からHTTPレスポンスコードを取得したい。
Access(アクセス)
-
8
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
11
VBスクリプトでIEの404 not foundエラーを検出する
Visual Basic(VBA)
-
12
エクセルでのハイパーリンク切れについて
Excel(エクセル)
-
13
Excel でのリンク切れの探し方
Excel(エクセル)
-
14
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
15
EXCELマクロでブック内のリンク状態を取得する方法
Excel(エクセル)
-
16
Hyperlink関数をクリックしてくれるマクロ
Excel(エクセル)
-
17
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
18
VBAでの Replace関数で、ワイルドカードは使えないのでしょうか?
Visual Basic(VBA)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
VBAからpythonへの転向について
-
VBA モジュールで共通に使う変...
-
エクセルVBAでシートモジュール...
-
Apache2 静的・動的モジュール...
-
Excel VBA 定義されたプロージ...
-
Excel VBAで、ユーザーフォーム...
-
グラフのX,Y座標を取得したい
-
Excelで時刻になったら知らせて...
-
【vba】フォームに書いてあ...
-
VBAで旧字体を異字体に一括で変...
-
Excel VBA 『Call』で呼び出す...
-
標準モジュールにpublicで宣言...
-
マクロについて教えてください。
-
モジュールの独立性について
-
C#のアプリケを64bit版のOSで起...
-
ArduinoのジャイロモジュールMP...
-
フォームがアクティブになった...
-
Excel VBAでリンク切れをチェッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
Excel VBA 定義されたプロージ...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
エクセルVBAでシートモジュール...
-
Excel VBA 『Call』で呼び出す...
-
モジュールとは何ですか
-
VBA This Workbookモジュール...
-
VBでグローバル変数を宣言するには
-
グラフのX,Y座標を取得したい
-
VBAで旧字体を異字体に一括で変...
-
モジュールの最大数はいくつな...
-
【vba】フォームに書いてあ...
-
Excel VBAで、ユーザーフォーム...
-
Form間の値の渡し方
-
モジュールとクラスの違いって...
-
Access VBA標準モジュールにつ...
-
本当にPublicな変数(配列で)
-
標準モジュールを削除したい。(...
おすすめ情報