No.1
- 回答日時:
やるとしたら・・・マクロというかExcel VBAを使って以下のようなプログラムを組む必要があります。
(1)VBA内部でInterlnet Explorerオブジェクトを生成。
(2)A列のURLを取得し、googleの検索URLを作ってInterlnet Explorerオブジェクトに渡す。
(3)googleからの応答(=Interlnet Explorerオブジェクトの処理終了)を待つ。
(4)googleから返されたHTMLをInterlnet Explorerオブジェクトから取得し、解析する。
(5)解析の結果、googleに登録済みならB列に「○」を挿入。
(6)シートに未解析分がなければ終了。あれば(2)へ。
たぶん4~50行程度のプログラムになるかな?
上に書いたことですぐにプログラムが思い浮かぶようなら、プログラムを作った方が早く作業が終わるでしょう。
どうすればよいかチンプンカンプンなら600個を手作業で確認した方が早く終わります。
同様の作業を将来的にも行うのでしたら、今のうちに勉強してプログラムを作っておいても良いかもしれません。
回答ありがとうございます。
将来的にまだこの作業はあるみたいなので、プログラムを作りたいのですが、
ちょっとというか、全然手に負えません。
すいませんが、サンプル的なものでいいので教えてただけないでしょうか?
お手数ですがよろしくお願いします。
No.2
- 回答日時:
あまりインターネットサイトに詳しくないので「グーグルに登録されているページ」という意味がよくわかりません。
とんちんかんなことを言ってたらごめんなさい。
もしエクセルのA列に記載されているURLを自動で開いてくれるマクロが必要ということなら以下をお試しください。
1.URLをA列に記載したシートのシートタブをクリックして、コードの表示を選択
2.現れたシートモジュールに以下をコピペ
3.ALT+F11キーでシートに戻る
これでA列のセルをクリックしたら、記入されたURLのサイトが開きます。
下向矢印↓キーで順順に見ていけます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tmp As String
If Target.Count > 1 Then Exit Sub '複数セル選択を除外
If Target.Column <> 1 Then Exit Sub 'A列以外を除外
If Target.Value = "" Then Exit Sub '空白セルを除外
On Error Resume Next
tmp = objIE.Name 'IEが起動しているかチェック(.Nameプロパティ取得できたらOK)
If Err.Number <> 0 Then 'エラーなら起動していないので起動する。
Set objIE = CreateObject("InternetExplorer.Application")
End If
On Error GoTo 0
With objIE
.Navigate Target.Text
.Visible = True
Do While .Busy = True
DoEvents
Loop
End With
End Sub
ほんとなら、ページが存在しないと自動的にB列に丸をつけられればいいのですが,ページが無いという判定をどうすればよいのか思いつきません。
ご回答ありがとうございます。
ちょっと、思っていたのと違いました。
グーグルに登録されているページというのは
グーグルにキャッシュされていて検索した時に
そのURLがグーグルのデータベースに載っているかどうかです。
もし、登録されていなければ、URLを検索しても
「http://~.comに一致する情報は見つかりませんでした。」
と表示されます。
でも、ソースを書いていただきありがとうございました。
No.3
- 回答日時:
>IEを開いてgoogoleのページでコピペで調べているのです
少し確認させてほしいのですが、Googleの「ページ」というのは何ですか?調べると、100ページはないはずです。Googleにページというのは言葉は出てきますが、70ページを越えた頃から怪しくなります。それ以上は、出せないというメッセージが出てきます。
一体、何をどう調べているのか教えてください。
件数ではいけないのですか? 以下は、約何件と出てくる部分を取り出したものです。
>B列には登録されている場合は「○」をつけ、登録されていない場合は「×」と記入しています。
登録されていない、という意味はなんですか?
例:$%%#%$#
という言葉では確かに出てきませんが、ほとんどはヒットするはずです。
よほどおかしな言葉ではない限りは、ヒットするはずです。
A列 B列 C列
エクセル ○ 8,600,000
ワード ○ 64,300,000
MS-Office ○ 25,100,000
クラウド ○ 20,300,000
オフコン ○ 61,500
$%%#%$# ×
また、本来は、10件以下とかは、危うい内容だということになります。
なお、質問では、環境が書かれていませんが、今回は、特別で、Excel, OS, IEなどのバージョンを一応、明示してください。ただし、OS が、Mac の場合は、おそらくこちらでは、コードは提示しても、動かない可能性があります。
もちろん、こちらでは、IEオートメーションは使いませんが、Googleでは、Header に、表示してあげないと、エラーが発生するようです。別にウソを入れても関係ないのですが、一応、念のためということで、教えてください。
また、検索用語は、どんなものを入れているのでしょうか?
通信環境やPCのパワーにもよりますが、600件でも、10分程度で終わるはずです。
No.4
- 回答日時:
#3で、質問を読み間違えました。
単語を調べるのだと勘違いました。
しかし、URLを登録しているという意味が返って良く分かりません。
単に、URLがヒットするかどうかの問題ではありませんか?
なぜ、Google が関係してくるのか、ページが関係するのか、分かっていません。
No.5
- 回答日時:
試してみて
Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub Web_check()
Dim sss As String
Dim ie As Object
Dim i As Long
With ThisWorkbook.Sheets("Sheet1")
.Range("A2") = "http://oshiete.goo.ne.jp/qa/6398307.html" 'テストが終わったら削除する
.Range("A3") = "http://oshiete.goo.ne.jp/qa/16398307.html" 'テストが終わったら削除する
Set ie = CreateObject("InternetExplorer.application")
ie.Visible = True
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
ie.Navigate ("http://www.google.co.jp/")
Do Until ie.busy = False
Sleep 100
DoEvents
Loop
ie.Document.all.q.Value = .Range("A" & i)
ie.Document.all.btnG.Click
Do Until ie.busy = False
Sleep 100
DoEvents
Loop
sss = ie.Document.body.innerHTML
Sleep 10000 'テストが終わったら削除する
If InStr(sss, "一致する情報は見つかりませんでした") Then
.Range("B" & i) = "xxxxxx見つかりませんでした。"
Else
.Range("B" & i) = "oooooo見つかりました。"
End If
Next i
End With
ie.Quit
Set ie = Nothing
End Sub
皆さんへの補足を見て仕上げましたが、
この作業にどういう意味が有るか解りませんでした。
回答ありがとうざいます。
今、20ぐらいのURLを試しにやってみたのですが、
いい感じです。感激です。
あと気になる事が2つ程あるので質問させてください。
質問1
仮にまとめて、1000以上とかやる場合にグーグルの方で
制限がかからないかちょっと心配です?
10件検索したら30秒は休ませるなんてことができたらいいのですが・・・
質問2
今ある600ぐらいのURLでは、途中で抜けているURLがいくつかあります。
もし、空白があったらそこは検索しないで飛ばすなんてことはできないでしょうか?
大変、わがままな質問ですが、教えてただけると本当に助かります。
よろしくお願いします。
No.6
- 回答日時:
補足、ありがとうございます。
質問1
仮にまとめて、1000以上とかやる場合にグーグルの方で
制限がかからないかちょっと心配です?
10件検索したら30秒は休ませるなんてことができたらいいのですが・・・
>Sleep 10000 'テストが終わったら削除する
↓
if (i Mod 10) = 9 then sleep 30000 '10処理するごとに30秒休む
質問2
今ある600ぐらいのURLでは、途中で抜けているURLがいくつかあります。
もし、空白があったらそこは検索しないで飛ばすなんてことはできないでしょうか?
>For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
>ie.Navigate ("http://www.google.co.jp/")
↓
For i = 2 To .Range("A" & Rows.Count).End(xlUp).Row
if .Range("A" & i) <> "" then
ie.Navigate ("http://www.google.co.jp/")
>End If
>
>Next i
↓
End If
End If
Next i
それから、テストが済んだら次の行は削除してもいいかも
ie.Visible = True
回答ありがとうございました。
昨日まで手作業をやていたのがうそみたいです。
いろいろ書いていただき本当にありがとうございました。
No.7
- 回答日時:
コメントは、次の書き込みの最後
二面に続けて書きます。
'標準モジュール
Private Const SKEY As String = "http://www.google.co.jp/search?hl=ja&q="
Public Sub GoogleCheckers()
Dim c As Range
Dim buf As String
Const qt As String = ""
For Each c In Range("A1", Cells(Rows.Count, 1).End(xlUp))
If c.Value <> "" Then
Application.ScreenUpdating = False
buf = UrlEncode(c.Value)
buf = SKEY & buf
ItemCehck buf, c
Application.ScreenUpdating = True
End If
Next
End Sub
Private Sub ItemCehck(ByVal strURL As String, iRng As Range)
Dim rng As Range
Dim objHTTP As Object
Dim i As Long, j As Long
Dim c As Variant
Dim httpLog As String
Dim msgbuf As Variant
Dim LimitNum As Long
On Error GoTo ErrHandler
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1")
objHTTP.Open "GET", strURL, False
objHTTP.SetRequestHeader "User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-JA; rv:1.9.2.12)"
objHTTP.Send
If Err.Number = 0 Then
If objHTTP.Status = 200 Then
httpLog = objHTTP.ResponseText
Call ContentsCheck(httpLog, iRng)
ElseIf objHTTP.Status >= 400 Then
iRng.Offset(, 1).Value = "アクセスエラー"
End If
Else
iRng.Offset(, 1).Value = "?"
End If
Exit Sub
ErrHandler:
iRng.Offset(, 1).Value = "不明"
End Sub
Private Sub ContentsCheck(httpLog As String, rng As Range)
Dim i As Long, j As Long
Dim buf As String
Const STXT As String = "検索オプション</a></div><div><div id=resultStats>"
i = InStr(1, httpLog, STXT, 1)
If i > 0 Then
buf = Mid(httpLog, i + Len(STXT), 50)
j = InStr(1, buf, "件<nobr>", 1)
buf = Mid(buf, 1, j)
End If
If CLng(Val(buf)) > 0 Then
rng.Offset(, 1).Value = "○"
rng.Offset(, 2).Value = Val(buf)
Else
rng.Offset(, 1).Value = "×"
End If
End Sub
'次に続く
No.8ベストアンサー
- 回答日時:
Private Function UrlEncode(ByVal sText As String) As String
Dim buf As String
If Len(sText) = 0 Then Exit Function
With CreateObject("ScriptControl")
.Language = "JScript"
buf = .CodeObject.encodeURI(sText)
buf = Replace(buf, ":", "%3A", , , 1)
buf = Replace(buf, "/", "%2F", , , 1)
UrlEncode = buf
End With
End Function
#3,4 の回答者です。私に答えないなら、もう、ご質問者さんに対して何も言いませんので、こちらの思惑で書かせていただくことにします。こちらでは成功していますから、特に問題はないはずです。IEオートメーションを使っている方には、今回のコードが参考になれば、幸いです。環境の違いなどの差は一切考慮しません。
上記のUrlEncode関数は、ほとんど利用価値はありませんが、もともとは単語を調べるためのものです。Quotation Mark("")で囲む必要かと思いましたが、差が出ませんでした。汎用性を残すために、これは使ったほうがよいです。ただ、URLEncode関数は、詳しい検討はなされていません。
本格的に使用する場合は、参照設定をしてください。そちらのほうが速いです。ItemCehckサブルーチンのobjHTTPオブジェクトは解放するコードが入っていません。本来は、モジュール・スコープでオブジェクトを置き、GoogleCheckers側の最後で解放するのがよいです。ESC等で途中で止めても弊害はないようです。
こちらの検索は、IEオートメーションは使ってはいませんが、IE8, Excel2003, Windows XP SP3ですが、RequestHeaderは、標準的な環境を使いました。開発ツールのDebugBurは必須かもしれません。ただ、ハッキングツールの一種として扱われているかもしれません。詳しく知りたい方は、「Webスクレイピング」で検索してみるとよいです。
実験結果として、Gooサイトでの個別のURLの一覧検索で、100件(#6400060~)で、およそ、2分以内で完了しました。ヒット32個(B列) 最高ヒット数3(C列)A列にURLを置きました。600個でも可能なはずです。ただし、サーバーからストップ掛かる時は、確か、503とかのエラーが返るはずです。
回答ありがとうございました。
早速試させて頂きました。
スピードの速さに驚きました。
昨日まで、手作業で行っていたため、このような事が出来て本当に感謝いたします。
今回はいい勉強をさせていただきました。
ありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/22 11:43
- InternetExplorer(IE) PC Windows10 URL登録(お気に入り登録)が時々いつの間にかログインできない状態になる 1 2022/12/25 08:41
- OCNモバイルONE ocnのマイページでモバイルの契約画面を見たい。 3 2023/03/30 21:44
- SEO Googleで会社名を入れて検索するとホームページが表示されるようにしたい 4 2022/09/06 23:36
- 教えて!goo dアカウントに登録する場合の携帯の番号 1 2022/11/13 18:14
- Windows 7 エクセルで重複データから抽出したい 2 2022/05/18 23:31
- Visual Basic(VBA) Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです 2 2023/03/05 02:44
- Excel(エクセル) Excel VBAについてです。 少しだけ知識はあるのですが、 うまくいかなかったので 質問させてい 3 2022/09/13 18:40
- Word(ワード) Word のマクロについての質問です。 ボタンを押すと登録したブックマーク先にジャンプする機能(リン 3 2023/08/16 12:17
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
すぐムラムラするのを抑えたい2...
-
YouTube 日本支社は存在するの...
-
キーワード検索だけでアクセス...
-
pastebinって何ですか?
-
ホームページアクセス数を増や...
-
オンネット・オフネットの意味
-
直リンクを見つける方法
-
Google Mapの文字を消すStyled ...
-
検索すると・・・
-
グーグルツールバーについて
-
google先生とは?
-
googleカレンダーのサイトへの...
-
DVDFab
-
googleで検索できない
-
google検索で地図にABCなどで出...
-
JimdoのホームページでのGoogle...
-
ググるってどういう意味?
-
SEO対策の技術的な意味を教えて...
-
緊急 XVIDEOSを久しぶりに検索...
-
ピザ屋注文したら、電話番号か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
すぐムラムラするのを抑えたい2...
-
YouTube 日本支社は存在するの...
-
googleカレンダーのサイトへの...
-
google先生とは?
-
googleアカウントがいつの間に...
-
キーワード検索だけでアクセス...
-
2chやpixivにあるような外部リ...
-
10000立方メートルは何キロリッ...
-
WEBページを(URLでなく)添付...
-
StrokesPlusでロッカージェスチ...
-
オンネット・オフネットの意味
-
pastebinって何ですか?
-
長いURLをフル表示するには?
-
googleアップデートしたらクソ...
-
Googleの読み方
-
google 画像検索の表示がおかしい
-
グーグル検索してキャッシュに...
-
ワードプレスでSEOに強いテーマ...
-
空気で鳴らすオルゴール
-
tkcity.netについて
おすすめ情報