質問するログイン新規登録

Q&A

1回答

400閲覧

URL先サイトのソースの中に「wp-content」

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

1クリップ

投稿2019/03/09 06:06

0

1

A列にURLの羅列が記入されています。

そのA列のURLは、1000以上あります。

そのURL先サイトのソースの中に、「wp-content」の記述がない場合。
そのURLの隣セルに「○」を表示させたいです。

これができるマクロはどのような記述になるでしょうか?

ちなみに、A列で取得してB列に「○」するだけのものはあります。

Sub ChkHTML()
Dim xHttp As Object
Set xHttp = CreateObject("Microsoft.XMLHTTP")
r = 1
Do While Range("A" & r).Value <> ""
sUrl = Range("A" & r).Value
xHttp.Open "GET", sUrl, False
xHttp.send
sHtml = xHttp.responseText
nRtn = InStr(sHtml, "WordPress")
If nRtn = 0 Then
Range("B" & r) = "○"
End If
r = r + 1
Loop
Set xHttp = Nothing
End Sub

ですが、途中で「アクセスが拒否されました」と出たりして、
マクロが勝手に止まります。

なので、A列にあるURL全てを調べることができないでいます。

どうにか、マクロで自動で取得していくには、
どのような記述に直せばできるでしょうか?

エクセル2016です。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

guest

この質問の投稿者はすでに退会しているため、質問者からの返信がない点にご留意ください。

回答1

0

マクロでないといけないのでしょうか。

セルB1に、数式 =IF(COUNTIF(範囲,条件),真の場合,偽の場合) を入力します。
今回の場合だとこんな感じ。
=IF(COUNTIF(A1,"wp-content"),"","○")

大文字小文字区別するので
さくらエディタなどでto lower case(小文字変換)にして
小文字に統一しておくこと。

時間をかけずにするならこれでいいでしょうね。

マクロにする場合でももっと単純に記述するといいかもしれません。

投稿2019/03/09 09:58

tukatter

総合スコア284

退会済みユーザー

退会済みユーザー

2019/03/09 10:06

回答ありがとうございます。 A列のURLの中に、wp-contentではなく、 URL先のソースの中に、wp-contentがないもの。 そのURLの隣のセルに、「○」と入れたいです。 URL先のサイトに訪れるため、マクロが必要だと思いました。
tukatter

2019/03/10 03:14

そうでしたね。読み間違えていました。 WPのサイトをURL一覧から探しているというように見えますが どのような意図で探されているのでしょうね。 拒否されるということは、 A列のurlのプロトコルが違うんじゃないでしょうか。 ヘッダが302を返しているのかも。 ブラウザで表示してみては。単純にWinHTTPを使うとか。 悪用だけはしないようにね。
退会済みユーザー

退会済みユーザー

2019/03/11 07:14

tukatterさん、返信ありがとうございます! > WPのサイトをURL一覧から探しているというように見えますが > どのような意図で探されているのでしょうね。 ・WordPressでないサイト ・WordPressで作られたサイト 数多あるURLから、この2つに分けたいです。 意図として、A列のURLから、 「目的のサイト」を探しています。 覚えているのは、 ・TOPページの印象 ・WordPressでないサイト の2つです。 TOPページを見れば、そのサイトだと分かるのですが、 一つずつURLを確認していくには、量が多すぎます。 そのため、もう1つの「WordPressでないサイト」。 これで絞ることができれば、早くに見つけられると思いました。 > 拒否されるということは、 > A列のurlのプロトコルが違うんじゃないでしょうか。 > ヘッダが302を返しているのかも。 > ブラウザで表示してみては。単純にWinHTTPを使うとか。 これが、どのように記述すればいいか、 まったく分からなくて、困っています。 A列には、URLが1000以上あるので、 「wp-content」がないのを、自動で分けていきたいです。 どのような記述にすれば、できるようになるでしょうか?
tukatter

2019/03/11 08:33

OnError goto を使って エラーになったものは とりあえずB列にURLをコピーして  エラーIDをC列に出力しながら 正しく読み込めるものはどれか、そうでないものはどれかを すみ分けしてあげてください。 ex.) Sub ChkHTML() On Error GoTo ErrLabel ループとエラーが出そうな処理を書く。 正しく終わったらA列以外にURLを移動 A列にURLがなかったら処理を飛ばす  ※無限ループにならないように終点を決める ErrLabel: エラーがあったらここに処理が飛んで処理が終わる。 URLをA列以外に移動 以下の内容を対象行のどこかのセルに書き込み "エラー番号:" & Err.Number & vbCrLf & _ "エラーの種類:" & Err.Description, vbExclamation End Sub 1回エラーが出たら止まるので再度実行で 上手くいったものとそうでないものをA列からURLを セル移動と結果を以降の列に書いておくと いいのではないでしょうか。 エラーの回数分実行することになるのでそこは仕方ないですが 実行前に保存を忘れずに。 読み込めなかったものをリストアップして そのURLをブラウザに表示してみると理由が分かります。 傾向をみてみてください。
退会済みユーザー

退会済みユーザー

2019/03/11 20:13

tukatterさん、返信ありがとうございます! 仕事柄、EXCELを使うようになってきたので、 マクロ・VBAをこれから勉強しようと思っています。 なので、まだ自分ではマクロ・VBAを組むことができないです。 上記のマクロは、別の方に書いてもらいました。 早くにURLから、目的のサイトを見つける必要があり、 申し訳ないですが、マクロを組んだものを載せて頂けますでしょうか? 今回のマクロを元に、 いろいろ勉強していきたいとも思っております。 ひとつ、よろしくお願いいたします。
tukatter

2019/03/11 23:34

私だったらそんな考え方をしないです。 提示されていたコードでもし実現するならということでアドバイスしました。 実際に試してみるということは自分でやってみましょう。 工夫してこそ身につくものなので丸投げなら仕事として依頼するなどになるでしょう。 以下のようなコードを使ってページがあるか ないかを判断して ページが表示されるかのステータスコードが404(ページがない)で  あるものを探すということになる。 Wordpressにしかないページ 探しているページにしかないページなど いろいろ方法はあります。 https://qiita.com/sssssumito/items/5332420d20f8ca538c8c https://oshiete.goo.ne.jp/qa/5474619.html もう少し考えてみてはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2019/03/12 01:11

tukatterさんのおっしゃる通りです。申し訳ありません。 記述のデータが消えてしまい、どれがどれのURLが分からなくなりました。 これは、どうにかして見つけるようにします。 そして、マクロも学んでいきたいと思います。 返信ありがとうございました。
tukatter

2019/03/12 03:07

やってみて、ここの部分で躓いたというときに アドバイスが要るなどのときに聞くといいでしょう。 分からなくなった、見たらわかるという点が何なのかを整理すれば いいかもしれないです。 みつかるといいですね。たまに様子見るようにします。
退会済みユーザー

退会済みユーザー

2019/03/14 06:53

目的のサイトを探したのですが、 目星を付けていたURLの中にありませんでした。 おそらく、3000ほどのURLの中でなく、 別のURLの中にあるのだと思います。 ですが、そのURL達は10万近くあります・・・。 流石に、この数を手動ではできないです。 >URL先サイトのソースの中に、「wp-content」の記述がない場合。 >そのURLの隣セルに「○」を表示させるマクロ。 このマクロというのは、書くのに丸一日掛かるとか、 そんなに難しく複雑なものなのでしょうか? 如何せん、マクロについて何も知らない段階です。 ですが、どうにかサイトを見つけないとならないです。 どうにか、マクロを完成させて、 サイトを見つけるようにしたいです。 不躾なお願いになってしまいますが、 何か対策などはありますでしょうか? よろしくお願いいたします。
tukatter

2019/03/14 08:44

>ちなみに、A列で取得してB列に「○」するだけのものはあります。 一番最初に提示していたマクロに ブレークポイントをつけて実行し、ステップ実行ということを やってみましょう。 xHttp.Open "GET", sUrl, False の部分でエラーが起きていると思いますが どのURLでエラーなのかを調べてみてください。
guest

この質問の投稿者はすでに退会しているため、質問者からの返信やベストアンサーの選定がない点にご留意ください。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問