プロが教える店舗&オフィスのセキュリティ対策術

エクセルのマクロを使用して
グーグル検索の所定のキーワードを取り込むようにしたのですが

処理としまして、プログラムを起動すると
ユーザーフォームが起動して、テキストボックスがあり
テキストボックス内に検索したいキーワードを入力して
ボタンをクリックしたら
メモ帳に自動でキーワードを書き込まれるようにしたいです。


出来れば、検索結果の一番下のほうに
「他のキーワード」と言うのがありまして
ダイエットで検索すると
「他のキーワード」が

ダイエット日記
ダイエット方法
食べ合わせダイエット
骨盤ダイエット
ダイエット レシピ
ダイエット 運動
どうぶつダイエット
ダイエット ブログ
バナナ ダイエット
炭水化物ダイエット

といったキーワードが出てくるのを
メモ帳に自動で書き出すのと
「他のキーワード」で検索すると
そこにも「他のキーワード」がありますので
それもメモ帳に書き出すようにしたいです。


1層目の「他のキーワード」を書き出すとこまでは
出来たのですが、2層目の「他のキーワード」を書き出す方法がわかりません。


それと、マクロを書いているエクセルファイルを開いたら
自動でマクロを起動できるように出来ますでしょうか?

わかりにくい説明かもしれませんが
よろしくお願いいたします。

A 回答 (2件)

一例です。



Sub test1()
Dim myWind As Object
Dim myUrl As String
Dim tmp1 As Object
Dim tmp2 As Object
Dim kw() As Variant
Dim i As Integer
Dim j As Integer

myUrl = "http://www.google.co.jp/" 'Google
For Each myWind In CreateObject("Shell.Application").Windows
With myWind
If .locationURL = myUrl Then
.Document.forms(0).elements(1).Value = "ダイエット"
.Document.forms(0).elements(2).Click
Do While .Busy = True Or .ReadyState <> 4
DoEvents
Loop
If .locationURL Like "http://www.google.co.jp/search*" Then
Set tmp1 = .Document.getElementById("brs")
Set tmp1 = tmp1.getElementsByTagname("a")
ReDim Preserve kw(tmp1.Length - 1)
For i = 0 To tmp1.Length - 1
MsgBox "ダイエット" & ":" & tmp1(i).innertext
kw(i) = tmp1(i).innertext
Next i
For i = 0 To UBound(kw)
.Document.forms(0).elements(1).Value = kw(i)
.Document.forms(0).elements(2).Click
Do While .Busy = True Or .ReadyState <> 4
DoEvents
Loop
Set tmp2 = .Document.getElementById("brs")
Set tmp2 = tmp2.getElementsByTagname("a")
For j = 0 To tmp2.Length - 1
MsgBox kw(i) & " : " & tmp2(j).innertext
Next j
Next i
End If
End If
End With
Next myWind
End Sub
    • good
    • 0

>1層目の「他のキーワード」を書き出すとこまでは


>出来たのですが、
どのような方法で実現なさっているのか、ご質問文からでは不明ですが、
検索結果のソースから『他のキーワード』みたいなものをキーにしてキーワードを取得していると仮定するなら、
表示されているキーワードのリンク先にserch以下のサーチがエンコードされて出ていますので、それを元に、順に同じことを繰り返せばよろしいのではないでしょうか?

あるいはリンク先を用いなくても、キーワードを取得しているので、そのままキーワードを入れ替えて同じ処理をしてもよろしいかと…


>それと、マクロを書いているエクセルファイルを開いたら
>自動でマクロを起動できるように出来ますでしょうか?
Workbook_Openなどのイベントで実行するようにしておけば可能です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!