
No.4ベストアンサー
- 回答日時:
#1~#3です。
直接の回答になっておりませんが、IEのbookmarkからURLを抽出して試行してみました。その結果、訳の分からない実行時エラーで止まったり、12000番台のWinInetのエラーが出てみたりと、なかなか奥が深いです。下記コードで、200番台を戻さないURLはリンク切れと判断してよいかと思います。当方のbookmarkでは正常につながるものは、すべて200を返しました。ほかは0(実行時エラー)または12000番台のエラーが多く、404と503がそれぞれ一個でした。(URL100個中)なお、キャッシュされますので、二回目以降の実行時は配慮が必要です。
Sub test()
Dim targetRange As Range, myCell As Range
Dim myURL As String
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set targetRange = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
For Each myCell In targetRange.Cells
myURL = myCell.Hyperlinks.Item(1).Address
'必要によりキャッシュ削除 下記URL参照
'http://hanatyan.sakura.ne.jp/vbhlp/DelUrl.htm
myCell.Offset(0, 1).Value = checkUrlLink(myURL)
Next myCell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Private Function checkUrlLink(myURL As String) As Long
Dim req As Object
Set req = CreateObject("Microsoft.XMLHTTP")
req.Open "GET", myURL, False
On Error Resume Next
req.send
On Error GoTo 0
If Err.Number = 0 Then
checkUrlLink = req.Status
Else
checkUrlLink = 0
End If
Set req = Nothing
End Function
参考URL:http://support.microsoft.com/kb/193625/ja
ご回答頂きありがとうございます。
お礼が遅くなり申し訳ありません。
まさしくこれを求めていました!使わせていただきます。
ありがとうございました^^
No.3
- 回答日時:
#1です。
後学のために動かしてみました。XL2010でやっていますが、XL2000の知識で組んでいます(^^;)A列にA1からハイパーリンクが入っているとします。B列にチェックした結果を戻します。False=リンク切れ。
失礼してOKWaveの質問のURLを100個作成して試験してみましたが、約2分10秒かかりました。(11g無線LAN環境)やってみて分かった事は、OKWaveは質問が存在しなくても、「質問がみつからない」というhtmlを戻すので、Falseにならないという事です。という事で、本当の試験はできておりませんが、ご参考まで。
Sub test()
Dim targetRange As Range, myCell As Range
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Set targetRange = Range(Range("A1"), Range("A" & Rows.Count).End(xlUp))
For Each myCell In targetRange.Cells
If checkUrlLink(myCell.Hyperlinks.Item(1).Address) = True Then
myCell.Offset(0, 1).Value = True
Else
myCell.Offset(0, 1).Value = False
End If
Next myCell
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Private Function checkUrlLink(myURL As String) As Boolean
Dim req
Set req = CreateObject("Microsoft.XMLHTTP")
req.Open "GET", myURL, False
req.Send
If Not (req.Status >= 200 And req.Status < 300) Then
checkUrlLink = False
Else
checkUrlLink = True
End If
End Function
ご回答いただき、ありがとうございます。
返事が遅くなり、申し訳ありませんでした。
さっそく、mitarashiさんのマクロを使わせていただきました。
まさしくこのようなマクロを求めていました(笑)
しかし、いくつか問題がありました。
リンク先が確実にあるものに関しては、問題がなかったのですが、
マクロ実行中に、このようなメッセージが出てマクロが止まってしまう事が
あります。なぜでしょうか?
○ オートメーションエラー
○ 書き込みができません
mitarashiさんのマクロが原因ではない(私のデータだと・・・)と思いますが、
これはどのようにしたらよいのでしょうか?
ちなみに、このメッセージが出るURLに関しては、true、falseは入力されず、
空白のままになって、マクロが停止します。
初歩的な質問かもしれませんが、ご助言頂けないでしょうか?
よろしくお願いします。
No.2
- 回答日時:
#1です。
Microsoft.XMLHTTPを用いる例をみつけました。
HTTPサーバからクライアントに向けた応答コードで判別しているので、こちらの方がスマートですね。
http://www.excel.studio-kazu.jp/kw/2010072916151 …
なお、HTTPサーバの戻すコードの解説は下記にあります。
req.Status >= 200 And req.Status < 300 の意味が理解できます。
http://www.h2.dion.ne.jp/~micased/http.html
No.1
- 回答日時:
IE6なら下記のNo.2のコードが使えると思いますが、IEのバージョンが新しいとひとひねりが必要らしいです。
当方インストールするつもりはないので、検証できません。あしからず。文中のリンク先(長いので探し出すのに苦労しますが)ではWebbrowserを用いる例が載っていますが、試してみておりません。ご参考まで。
http://okwave.jp/qa/q4082853.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 画像のようなチェックボックスとハイパーリンクがありますが、 ハイパーリンクを押すと、チェックボックス 1 2023/04/07 12:56
- Excel(エクセル) ハイパーリンクの削除について 2 2022/11/10 07:32
- フリーソフト 画像貼り付け、URLに飛べる軽いメモ帳 3 2022/05/12 07:42
- Excel(エクセル) ハイパーリンクでネットにつながらないのは? 2 2022/08/07 18:35
- Excel(エクセル) エクセル会員名簿について。 Yahooメールの連絡先で、AさんCさんにチェックをつけて別のグループに 2 2023/03/27 20:33
- 会計ソフト・業務用ソフト 共有しているエクセルのファイルが100MB超えをしました。全く画像など貼ったりしていません。 しかし 4 2023/02/06 14:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) VBAでWEBサーバー上に保存されたPDFファイルのリンク有効チェックについて 1 2022/11/11 16:04
- Excel(エクセル) エクセルのハイパーリンクで別BOOKを開く 3 2022/10/26 18:48
- Excel(エクセル) エクセルの図形にハイパーリンクとマクロ登録について教えてください 1 2022/06/11 11:29
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAでリンク切れをチェックしたい。
Excel(エクセル)
-
URLのリンク切れをマクロを使って表示する方法を教えてください。
その他(プログラミング・Web制作)
-
リンク切れチェックを行うマクロ
Excel(エクセル)
-
-
4
エクセルでのハイパーリンク切れについて
Excel(エクセル)
-
5
VBAで有効なURLのみ抽出する方法
Excel(エクセル)
-
6
Excel でのリンク切れの探し方
Excel(エクセル)
-
7
EXCEL2000VBAでハイパーリンクの有無を調べたい。
Excel(エクセル)
-
8
特定の名前のオートシェイプの有無を知りたい(エクセルVBA)
Excel(エクセル)
-
9
括弧があるとHYPERLINKで飛べない?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
EXCEL VBAマクロ中断でデバッグ...
-
ExcelVBA Range クラスの Page...
-
VBAがブレークモードになっ...
-
実行時エラー -'-2147417848
-
OLEDB.NETで接続できない
-
なぜこんな初歩的なVBAのIf文で...
-
VBAのコードがエラーになっ...
-
マクロについて教えてください...
-
VBAのエラー発生場所をメッセー...
-
Invalid procedure call or arg...
-
VB6.0 →VB2005 のアップグレー...
-
VB6+SQL サーバー 2000 で 実行...
-
マクロでのActiveSheet.Pasteで...
-
C++Builder 6 : TListView でエ...
-
なぜエラーになるのでしょうか...
-
vbaのエラーを修正するコード(...
-
Access2002 で Select Case文が...
-
VBAでピボットテーブルの作成(...
-
ExcelVBAで、ユーザー定義型は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
VBAがブレークモードになっ...
-
なぜこんな初歩的なVBAのIf文で...
-
ExcelVBA Range クラスの Page...
-
EXCEL VBAマクロ中断でデバッグ...
-
実行時エラー -'-2147417848
-
【Excel VBA】マクロをボタンに...
-
Outlook.ApplicationをCreateOb...
-
VBAでのエラー
-
マクロについて教えてください...
-
実行時エラー3001「引数が間違...
-
実行時エラー48発生時のDLL特定...
-
VB6+SQL サーバー 2000 で 実行...
-
エクセルエラー13型が一致しま...
-
VBS実行時エラー オブジェクト...
-
ADODB.Streamを使用してUTF-8を...
-
INSERT INTOステートメント構文...
-
VBAで、定数式が必要ですのエラ...
-
OLEDB.NETで接続できない
-
VBSで変数の宣言はできないので...
おすすめ情報