• ベストアンサー

エクセルでwebデータの取り込みをしたいのですが

ここのところ、本やネットで調べては格闘しているのですがどうしても分からないので質問させてください。 やりたいことは、 1.エクセルでヤフーモバイルを開き、選択したキーワードで検索 2.検索結果から、そのキーワードのヒット件数・上位10位のサイトのURLをエクセルに貼り付け をしたいのですが(違うHPでもしたいのですが)APIが使えないHPで検索BOXへの入力と検索ボタンのクリック と結果のデータエクセルへの貼り付けがど~にもよくわかりません? どなたか、ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

>違うHPだと指定する箇所も変わってくるのでしょうか? HPのソースを見ればわかるように、当然変わります。 Yahoo!モバイルの例 Sub test2() Dim myWind As Object Dim InputTag As Object Dim myUrl As String Dim myFlg As Boolean Dim i As Long myUrl = "http://mobile.yahoo.co.jp/" 'Yahoo!モバイル For Each myWind In CreateObject("Shell.Application").Windows With myWind If .locationURL = myUrl Then Set InputTag = .document.getElementsByTagName("INPUT") For i = 0 To InputTag.Length - 1 If InputTag(i).ID = "srchtxt" Then InputTag(i).Value = "ダイエット" ElseIf InputTag(i).alt = "検索" Then InputTag(i).Click myFlg = True: Exit For End If Next i End If End With If myFlg = True Then Exit For Next myWind Set InputTag = Nothing End Sub 検索キーワードの入力は <input type="text" id="srchtxt" name="p" value="" maxlength="128" size="36"> myWind.Document.getElementById("srchtxt").Value = "ダイエット" とか myWind.Document.forms(1).elements(0).Value = "ダイエット" のようでもOKです。 検索ボタンのクリックは <input class="srchbtn" type="image" alt="検索" src="http://i.yimg.jp/images/mobile/pc/images/common/msearch_button.gif"> idもnameもないので、alt="検索"を使ってみました。 >こういう作業になにかセオリーみたいなものってあるんですか? 専門的なことはわかりません。私は下記のようなところを参考にしています。 三流君VBAでIE操作 InternetExplorer.Applicationを操作する http://www.ken3.org/cgi-bin/group/vba_ie.asp インターネットエクスプローラ操作編 http://www.happy2-island.com/vbs/cafe02/capter00701.shtml 7.1 IEオブジェクトを作る(IE7編) http://www.happy2-island.com/vbs/cafe02/capter00711.shtml

kiba5150
質問者

お礼

物凄く参考になりました! 本当に細かく教えていただきありがとうございます。 このコードを参考にさらに勉強していきます。 ありがとうございました。

その他の回答 (2)

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.3

進んでいますか? test2の検索結果のページが表示されているとして検索結果を取得する例 (もっと簡単な方法があるのかもしれません) Sub test3() Dim myWind As Object Dim myTag1 As Object, myTag2 As Object, myTag3 As Object Dim myUrl As String Dim myFlg As Boolean Dim kw() As Variant Dim i As Long, j As Long, k As Long myUrl = "http://mobile-search.yahoo.co.jp/search*" 'Yahoo!モバイル検索結果 For Each myWind In CreateObject("Shell.Application").Windows With myWind If .LocationURL Like myUrl Then Set myTag1 = .document.getElementsByTagName("p") For i = 0 To myTag1.Length - 1 If myTag1(i).innertext Like "*件*" Then ReDim Preserve kw(k) kw(k) = myTag1(i).innertext k = k + 1 End If Next i Set myTag2 = .document.getElementsByTagName("ol") For i = 0 To myTag2.Length - 1 Set myTag3 = myTag2(i).getElementsByTagName("a") For j = 0 To myTag3.Length - 1 MsgBox kw(i) & vbLf & myTag3(j).innertext & vbLf & myTag3(j).href Next j Next i myFlg = True End If End With If myFlg = True Then Exit For Next myWind Set myTag1 = Nothing: Set myTag2 = Nothing: Set myTag3 = Nothing End Sub

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

”API”という文字があるのでマクロだと思いますが Googleが開いているとして 検索欄にキーワードを入力して検索ボタンをクリックする例 Sub test() Dim myWind As Object Dim myUrl As String myUrl = "http://www.google.co.jp/" 'Google For Each myWind In CreateObject("Shell.Application").Windows With myWind If .locationURL = myUrl Then .Document.all.tags("input").Item("q").Value = "ダイエット" .Document.all.tags("input").Item("btnG").Click End If End With Next myWind End Sub どこまで出来ているのか、現状のコードを提示できないでしょうか。

kiba5150
質問者

お礼

xls88さん、回答ありがとうございます。 現状はシートにウェブブラウザーコントロールにてサイト表示させているのみに留まっています・・・ googleのソースを見たのですが <input autocomplete="off" maxlength=2048 name=q size=55 class=lst title="Google 検索" value=""><br><input name=btnG type=submit value="Google 検索" class=lsb> にある、「name=q 」を指定して、「value=""」の中に検索語を指定してやり、「name=btnG 」を「Click」でクリックしてやるという解釈でよろしいのでしょうか? 違うHPだと指定する箇所も変わってくるのでしょうか? こういう作業になにかセオリーみたいなものってあるんですか? 質問ばっかりですいません。

関連するQ&A