![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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
''//--
なお、今度は、これを、ハイパーリンクのリストに反映しないといけないのかな?
ご回答ありがとうございます。
無事に処理することが出来ました。
マクロ使用中でもスクロール出来るのはすごく良かったです。
大変助かりました。
ありがとうございました。
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 …
![「Excel VBAでリンク切れをチェック」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/0/24501_5703d6675c1fd/M.jpg)
お探しの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
VBスクリプトでIEの404 not foundエラーを検出する
Visual Basic(VBA)
-
10
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
11
EXCELマクロでブック内のリンク状態を取得する方法
Excel(エクセル)
-
12
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
13
エクセルでのハイパーリンク切れについて
Excel(エクセル)
-
14
VBAからのHYPERLINK関数のアドレス取得法
その他(Microsoft Office)
-
15
excel VBA Dirにて検索したフォルダのパスを取得してハイパーリンクを貼る方法
Excel(エクセル)
-
16
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
17
《エクセルVBA》「他の人が該当ファイルを使用中の場合」の処理
Excel(エクセル)
-
18
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
19
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
20
エクセルで「特定の文字を含むファイルへのリンク」or「特定の文字を含むファイルの検索の実行」
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Sub Workbook_Open()でユーザー...
-
Excel VBAでリンク切れをチェッ...
-
VBでグローバル変数を宣言するには
-
Excel VBAで、ユーザーフォーム...
-
関数の引数にクラスを使いたい
-
ユーザー定義関数に#NAME?が返...
-
偶数/奇数の判定
-
他Book(シートモジュール)のマ...
-
モジュールとクラスの違いって...
-
'Range'メソッドは失敗しました
-
マクロでファイル削除をごみ箱...
-
excel2010で「次の非表示モジュ...
-
フリーの画像認証フォーム
-
Excelで時刻になったら知らせて...
-
クラスモジュールについて
-
モジュールからフォームのボタ...
-
エクセルVBAで標準モジュー...
-
モジュールの最大数はいくつな...
-
VBのフォームモジュールと標準...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
エクセルVBAでシートモジュール...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
Excel VBA 『Call』で呼び出す...
-
Excel VBA 定義されたプロージ...
-
VBA This Workbookモジュール...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAで、ユーザーフォーム...
-
ArduinoのジャイロモジュールMP...
-
グラフのX,Y座標を取得したい
-
'Range'メソッドは失敗しました
-
VBAで旧字体を異字体に一括で変...
-
モジュールとクラスの違いって...
-
Excelで時刻になったら知らせて...
-
【vba】フォームに書いてあ...
-
モジュールとは何ですか
-
Access VBA標準モジュールにつ...
-
モジュールの最大数はいくつな...
-
VBのフォームモジュールと標準...
おすすめ情報