[[20230301085658]] 『エラーチェック を一括でしたい』(しろ9) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エラーチェック を一括でしたい』(しろ9)

こんにちは

csvデータの中にあるhttpから始まるリンクURLでリンク切れのものを
一括で調べる方法をご存じの方いらっしゃいますでしょうか?

エクセル、フリーソフト、無償のwebサイトなど、、

ワン商品ずつ調べるフリーソフトはございましたが作業時間が大変なので
一括で処理できるものがあればと思い投稿致しました。

宜しくお願い致します(o_ _)o))

< 使用 Excel:Excel2016、使用 OS:Windows10 >


https://excel-excel.com/letsmake14/step11.html
 やってないけど、試してみては!?
(稲葉) 2023/03/01(水) 09:12:01

稲葉様

コメントありがとうございます。

確認させて頂きこちらの説明が不足しておりましたので追記致します。

確認したいcsvデータはセルごとにhttpのリンクURLがあるのではなく
セルの中にHTMLタグがあり、その中にあるリンクURLでリンク切れを探したいです。
━━━━━━━━━━
例)
<p><a href="https://●●/" target="_blank"><img src="https://image.●●.jpg" width="100%"></a></p><table bgcolor="#383838" border="1" cellpadding="1" cellspacing="1" width="100%">
<tr>
<th align="center" bgcolor="#F8ECED"><font size="2">商品番号</font></th>
━━━━━━━━━━

といったものが商品番号ごとにございます。
(しろ9) 2023/03/01(水) 09:18:03


 HTTP〜始まるものだけ?
 相対参照とかはないの?
 ../img/abc.jpgみたいな

 HTTP〜始まるものだけなら、それだけ別のシートに出力して先に紹介したところ使って
 チェックすればいいんでない?

(稲葉) 2023/03/01(水) 09:24:22


>> 相対参照とかはないの?
 ../img/abc.jpgみたいな

上記のような形式だとURLはエラーになりますので、
httpから始まるもののみとなります。

>> HTTP〜始まるものだけなら、それだけ別のシートに出力して

こちらのやり方が分かりかねまして不要なタグやテキストが商品によって違いますので
困っておりました。
(しろ9) 2023/03/01(水) 09:30:47


| こちらのやり方が分かりかねまして不要なタグやテキストが商品によって違いますので
| 困っておりました。
それならなおさら、その様々な例を示さないと誰にもわからないんじゃないですか?
最初の"と"で囲まれた部分じゃないんですか?二回Instrで"の位置を調べ、
Mid関数で取り出すだけということでもないんですか?
(abc) 2023/03/01(水) 09:36:03

 こんな感じで出せないかしら?
 A列にデータがあれば、B列にHTTP〜だけ出力
    Sub 出力()
        Dim r As Range
        Dim v() As String
        For Each r In Range("A1", Cells(Rows.Count, "A").End(xlUp))
            v = gethttp(r.Value)
            If Not Not v Then
                Cells(Rows.Count, "B").End(xlUp).Offset(1).Resize(UBound(v) + 1).Value = Application.Transpose(v)
            End If
        Next r
    End Sub
    Function gethttp(s As String) As String()
        Static re As Object, mt As Object, m As Variant
        Dim pt As String
        Dim v() As String, cnt As Long
        If re Is Nothing Then Set re = CreateObject("VBScript.RegEXP")
        pt = "http.+?\"""
        re.Pattern = pt
        re.Global = True
        re.MultiLine = False
        If re.test(s) Then
            Set mt = re.Execute(s)
            ReDim v(mt.Count - 1)
            cnt = 0
            For Each m In mt
                v(cnt) = Replace(m, """", "")
                cnt = cnt + 1
            Next m
        End If
        gethttp = v
    End Function

 結果例
    |[A]                                                                                       |[B]                   
 [1]|<p><a href="https://●●/" target="_blank"><img src="https://image.●●.jpg" width="100%">|                      
 [2]|<tr>                                                                                      |https://●●/         
 [3]|<th align="center" bgcolor="#F8ECED"><font size="2">商品番号</font></th>                  |https://image.●●.jpg
 [4]|                                                                                          |                      
(稲葉) 2023/03/01(水) 10:23:56

稲葉様

数点試しましたがリンクのみB列に抽出できておりました!
ありがとうございます凄く感動致しました(o_ _)o))

あとはB列のリンクをチェックを一括でできるやり方がまだ分かりませんので
お力添え頂けますと幸いです。
(しろ9) 2023/03/01(水) 10:46:19


https://qiita.com/sssssumito/items/5332420d20f8ca538c8c

 こっちのほうが使いやすそう。
 選択範囲のURLをチェックして、背景の色変えるみたい。
 実行は、URLStatusChecking()を使えばOK

 ただ、えらい時間かかりそう
(稲葉) 2023/03/01(水) 11:12:44

稲葉様

コメント有難うございます。
稲葉様のマクロで処理したシートのB列にあえてエラーになるリンクを足して
試してみましたがなにも起こりませんでした。

リンク先のマクロを丸々コピペしたのですが、稲葉様の環境ではURLのチェックできましたでしょうか?
(しろ9) 2023/03/01(水) 12:48:07


# 発言取り消しました。
(abc) 2023/03/01(水) 13:12:43

 ちなみに、私は試せる環境にないので、すみませんがあとはご自身でお願いしたいです。
(稲葉) 2023/03/01(水) 13:18:33

稲葉様

承知致しました。

━━━━━━━━━━

For Each c In Selection

というところで下記のエラーがでておりました。

実行時エラー 438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。

━━━━━━━━━━

どういったエラーになるかなどどなたかコメント頂けますと幸いです。
(しろ9) 2023/03/01(水) 13:30:17


MsgBox TypeName(Selection)
とかで確認すれば良いんでない?
(お疲れ) 2023/03/01(水) 13:58:56

ああ、リンク先の事ですか?
リンク先の事は知らない。
(お疲れ) 2023/03/01(水) 14:08:52

稲葉様

先日ご教示頂いたマクロですが、
httpから始まるタグの抽出する際、どういったルールで抽出するようになっているのでしょうか?

例)
|<p><a href="https://●●/" target="_blank"><img src="https://image.●●.jpg" width="100%">
↓↓
https://●●/
https://image.●●.jpg

ときれいに抽出できましたが「"」があるところまで、という仕様なのでしょうか?
(しろ9) 2023/03/07(火) 10:48:10


 正規表現と呼ばれる手法で抜き出しています。
https://excel-ubara.com/excelvba4/EXCEL232.html

 指定したパターンは
 pt = "http.+?\"""
 で、読みやすくすると
 http.+?\"
 です。

 意味は
 httpから始まり、
 .+?" ←「.」何らかの文字が 「+」一文字以上続いた 「.+?」最小マッチで 「"」ダブルコーテーションまでの文字を抜き出す

 例(便宜的に、右辺は"を抜いています)
 s = <p><a href="https://●●/" target="_blank"><img src="https://image.●●.jpg" width="100%">
 ↓のように、1行から抜き出し、Matchesコレクションに格納する
  今回は、例の場合2個抜き出される 
 Set mt = re.Execute(s)
 https://●●/"
 https://image.●●.jpg"

 格納したコレクションから、1個ずつ値を取り出して、「"」を空白に置き換える
 For Each m In mt
     v(cnt) = Replace(m, """", "") '※1
     cnt = cnt + 1
 Next m

 ※1
 Replace(https://●●/",",空白) = https://●●/ 最後の「"」が空白に置き換わる
 
 それを配列に入れて出力しているだけです。

(稲葉) 2023/03/07(火) 11:04:42


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.