こんにちは、ExcelVBAの初心者です。
上司から検索サイトでの検索結果に出てくる上位URLをコピー&ペーストするように指示を受けたのですが、作業が大変で全然進まず困っています。
もしからた、ExcelVBAで解決できるのではと、ご相談させて頂きました。
具体的には以下のような作業を手作業でやっています。
これを自動化することは可能でしょうか?
1.エクセルに検索するキーワードがセル(A列)ごとにおさめられています。
(セルには2つのキーワードが入っていてand条件となります)
2.それをコピーしてyahooかgoogleで検索をします。
3.検索結果の上位3つまでのURLをコピーして、キーワードの右側のセルにペーストしています。(スポンサードサーチなど広告系は含みません)
【イメージです】
A B C
――――――――――――――――――――――――――
1|カメラ SONY |________|______
2|電子レンジ シャープ|________|______
3|冷蔵庫 日立 |________|______
↓
A B C
――――――――――――――――――――――――――
1|カメラ SONY |www.sony.jp/dslr|www.sony.co.jp
2|電子レンジ シャープ|healsio.jp |www.sharp.co.jp/sup
3|冷蔵庫 日立 |________|______
素人で実現可能なのかも分かりませんが、もし分かる方がいらっしゃいましたら何卒お知恵をお貸しください。
どうかよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
利用規約に抵触しているようです。
接続に関する問題: ネットワークで表示される「申し訳ありません」ページ
http://www.google.co.jp/support/websearch/bin/an …
サービス利用規約
http://oshiete1.goo.ne.jp/kotaeru_reply.php3?q=5 …
ご回答ありがとうございます。
やっぱりなかなか上手くいかないものですね。
VBAでは無理ということが分かっただけでも良かったです。
地道に手作業でやっていきます。
ご親切にいろいろありがとうございました(^^
No.3
- 回答日時:
Dim i As Integer
myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
If .LocationURL = myUrl Then
For Each c In Sheets("Sheet1").Range("A1:A10")
i = 0
上記の部分を下記に変えてください。
検索キーワードが、連続で入力されている範囲を取得します。
数千行あると、どれほど時間がかかるか解りません。
検索キーワードの数を減じた、ダミーシートでテストしてください。
Dim i As Integer
Dim drng As Range
With Sheets("Sheet1")
Set drng = .Range("A1", .Range("A1").End(xlDown))
End With
myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
If .LocationURL = myUrl Then
For Each c In drng
i = 0
この回答への補足
回答ありがとうございます。
10行以上目移行も動いてくれるようになりました。
ただ、しばらく検索(50~100行)くらい進むと下記の英文が表示され、検索が出来なくなってしまいます。(自動化に対してのエラーでしょうか?)
これは、もう仕方ないのでしょうか?
それともYahooなどですと起こらないのでしょうか?
-----------------------------
We're sorry...
... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
See Google Help for more information.
-----------------------------
No.2
- 回答日時:
とりあえず、検索結果のURLを3つ抽出します。
適当に条件を付けています。
厳密に上位の3つというわけではありません。
Sheet1のA1:A10に検索キーワードと仮定
検索キーワードが数千行もあると、どれほど時間がかかるか解りません。
Sub test1()
Dim myWindow As Object
Dim myUrl As String
Dim tmp As Object
Dim myLink As Object
Dim c As Range
Dim i As Integer
myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
If .LocationURL = myUrl Then
For Each c In Sheets("Sheet1").Range("A1:A10")
i = 0
'//Google検索
.Document.all.Tags("input").Item("q").Value = c.Value
.Document.all.Tags("input").Item("btnG").Click
Call webReadyState(myWindow)
'//検索結果抽出
For Each myLink In .Document.Links
If InStr(myLink, "google") = 0 Then
If InStr(myLink, "%") = 0 Then
If Right(myLink, 1) = "/" Then
i = i + 1
c.Offset(, i).Value = myLink
End If
End If
End If
If i = 3 Then Exit For
Next myLink
.GoBack
Call webReadyState(myWindow)
Next
Exit For
End If
End With
Next myWindow
Set tmp = Nothing
End Sub
Sub webReadyState(myWindow)
With myWindow
Do While .Busy = True
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop
End With
End Sub
この回答への補足
回答ありがとうございます。
希望通りの動きでした!(^^
ただ、どうしても10行目で止まってしまいます。
10行目以降も取得を自動で進めることが出来ないでしょうか?
No.1
- 回答日時:
とりあえず下記のようにしてみました。
IEでGoogleを開いている状態で実行してください。
Dim myWindow As Object
Dim myUrl As String
Dim tmp As Object
Dim i As Integer
myUrl = "http://www.google.co.jp/"
For Each myWindow In CreateObject("Shell.Application").Windows
With myWindow
If .locationurl = myUrl Then
'//Google検索
.Document.all.Tags("input").Item("q").Value = Range("A1").Value
.Document.all.Tags("input").Item("btnG").Click
Do While .Busy = True
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop
'//検索結果抽出
If .locationurl Like "http://www.google.co.jp/search*" Then
Set tmp = .Document.getElementsByTagName("a")
For i = 0 To tmp.Length - 1
If tmp(i).innertext Like "*ソニー" Then
MsgBox Range("A1").Value & vbLf & tmp(i).innertext & vbLf & tmp(i).href
End If
Next i
End If
.GoBack
Exit For
End If
End With
Next myWindow
Set tmp = Nothing
この回答への補足
回答ありがとうございます(^^
イメージしているものにすごく近いです。
ボックスに入ってくるURLがB,C,D列に自動的に入っていくように出来ますでしょうか?
あと、Excelに入ったの検索キーワードが数千行あるので、そのキーワードがgoogleの検索ボックスに自動的に入力されURLを取得し終わったら、また次の行のキーワードを、、、 と一連の作業がすべて自動的で出来るでしょうか?
難しいことをいってすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) セルの値をグーグルで検索するエクセルVBAについて! 2 2022/08/01 21:41
- その他(ブログ) ブログを始めたいと思うのですが、下記のような場合のおすすめブログサービスを教えてください。 収益化な 4 2023/04/10 10:01
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- インターネットビジネス webでの宣伝方法について 顧客サービスを主とするHPを立ち上げました。 アドワーズ広告とSNSに投 1 2023/07/25 01:25
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- Windows 7 ショートカットキー 応用編 どういうの主に使いますか? 2 2022/12/28 23:46
- SEO SEOの検索順位について 例えばあるキーワードで検索順位が6位だとしたら、そのキーワードに関連する良 1 2022/06/30 21:51
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルの2ページ目の作り方
-
エクセルで「コピーしたセルの...
-
EXCELシートをPowerPointにきれ...
-
Excelに、ダブルクォーテーショ...
-
エクセルで勝手に「折り返して...
-
Excel)軽いデーターのはずなの...
-
Excel 行の連続データを列に参...
-
Excelでコピーした行の挿入を繰...
-
メールソフト「サンダーバード...
-
エクセルで隣接していない複数...
-
EXELで複数のとびとびのセルを...
-
エクセルで、選択範囲の数値全...
-
エクセルオートフィルで書式を...
-
Excelで値をコピーするとセルの...
-
エクセル コピーしたデータを1...
-
エクセル・数値が変化したらカ...
-
フォームのテキストボックスの...
-
エクセルで値だけコピーして背...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセル:マクロ「Application...
-
エクセルのアポストロフィを一...
-
エクセルの2ページ目の作り方
-
エクセルで勝手に「折り返して...
-
Excel 行の連続データを列に参...
-
EXCELシートをPowerPointにきれ...
-
EXCELのオートフィルの設定を変...
-
「選択範囲を解除してアクティ...
-
メールソフト「サンダーバード...
-
エクセルオートフィルで書式を...
-
Excelでコピーした行の挿入を繰...
-
Excelに、ダブルクォーテーショ...
-
エクセルでの行数・列数を指定...
-
エクセルで隣接していない複数...
-
Excel)軽いデーターのはずなの...
-
エクセルで値だけコピーして背...
-
EXELで複数のとびとびのセルを...
-
エクセル 別シートへのコピー...
-
エクセルで、選択範囲の数値全...
-
エクセル・数値が変化したらカ...
おすすめ情報