[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラーチェック を一括でしたい』(しろ9)
こんにちは
csvデータの中にあるhttpから始まるリンクURLでリンク切れのものを
一括で調べる方法をご存じの方いらっしゃいますでしょうか?
エクセル、フリーソフト、無償のwebサイトなど、、
ワン商品ずつ調べるフリーソフトはございましたが作業時間が大変なので
一括で処理できるものがあればと思い投稿致しました。
宜しくお願い致します(o_ _)o))
< 使用 Excel:Excel2016、使用 OS:Windows10 >
やってないけど、試してみては!? (稲葉) 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
こんな感じで出せないかしら?
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
ちなみに、私は試せる環境にないので、すみませんがあとはご自身でお願いしたいです。 (稲葉) 2023/03/01(水) 13:18:33
承知致しました。
━━━━━━━━━━
For Each c In Selection
というところで下記のエラーがでておりました。
実行時エラー 438
オブジェクトは、このプロパティまたはメソッドをサポートしていません。
━━━━━━━━━━
どういったエラーになるかなどどなたかコメント頂けますと幸いです。
(しろ9) 2023/03/01(水) 13:30:17
先日ご教示頂いたマクロですが、
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.