外部プログラムの起動(Shell関数?)とキー操作(SendKeyステートメント?)になるかなと思っています。が、違うかも・・・。
具体的にVBAで実現したいことは、マクロを実行すると、
ブラウザ(IE)を起動
⇒Googleのトップページにアクセス(IEのホームにGoogleを設定しないこと!)
⇒そこで「Excel」と投入し、「検索」のボタンを押す
⇒ブラウザ(IE)を閉じる
となることです。
※検索結果はひとまず無視でいいです。
ここまでの流れをVBAで記述し、完全に動かしたいのですが、もしこのように記述すればいいのでは!というのがありましたら、お願い致します。
(すぐに質問を終了したりはしないので宜しくです。最低2日は終了しません。)
こんな感じでどうでしょう。
IE終了が必要でしたらコメントアウトの部分を復活させてください。
Sub google() Dim IE As Object Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True IE.Navigate ("http://www.google.co.jp/") 'Busy解除まで待つ i = 0 Do Until IE.busy = False Or i > 1000 i = i + 1 Loop IE.document.all.q.Value = "EXCEL" IE.document.all.btnG.Click ' IE.Quit 'IE終了処理 ' Set IE = Null End Sub
IEであれば、オブジェクトとして操作可能ですので、Shell関数で起動するよりも詳細な操作が可能です。
サンプルを示します。
Googleの検索窓にキーワードを入力する方法は色々あります。
Option Explicit Option Base 0 Sub test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "http://www.google.co.jp" ' ページロード待ち Do While objIE.busy And objIE.readystate < 2 Loop ' キーワードを入力 objIE.document.getelementsbyname("f").Item(0).q.Value = "Excel" ' 検索ボタンを押す(フォームをsubmit) objIE.document.getelementsbyname("f").Item(0).submit ' ページロード待ち Do While objIE.busy And objIE.readystate < 2 Loop MsgBox "検索完了" objIE.Quit Set objIE = Nothing End Sub
一番確実なのは、最初からキーワード込みのURLを表示することです。
Option Explicit Option Base 0 Function GetSearchUrl(ByVal searchKeyword As String) As String Dim i As Integer Dim searchUrl As String searchUrl = "http://www.google.com/search?ie=shift_jis&q=" searchKeyword = StrConv(searchKeyword, vbFromUnicode) For i = 1 To LenB(searchKeyword) searchUrl = searchUrl & "%" & Right$("0" & Hex$(AscB(MidB$(searchKeyword, i, 1))), 2) Next i GetSearchUrl = searchUrl End Function Sub test2() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate GetSearchUrl("Excel") ' ページロード待ち Do While objIE.busy And objIE.readystate < 2 Loop MsgBox "検索完了" objIE.Quit Set objIE = Nothing End Sub
ありがとうございます!!
' 検索ボタンを押す(フォームをsubmit)
objIE.document.getelementsbyname("f").Item(0).submit
下のコメントにも追加で書いたのですが、
nameがないsubmitボタンをクリックする場合はどうすればよいでしょうか?
(Googleではないケースですが・・・)
もしわかりましたら、追加回答もらえれば幸いです。
回答者 | 回答 | 受取 | ベストアンサー | 回答時間 | |
---|---|---|---|---|---|
1 | rome0315 | 13回 | 10回 | 3回 | 2008-12-10 23:37:32 |
2 | misha-sakuraba | 4回 | 3回 | 0回 | 2008-12-11 00:33:12 |
すごいです!
完璧にできていました!!
参考にします!
勉強になります!