人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ExcelのVBAについて質問します。

外部プログラムの起動(Shell関数?)とキー操作(SendKeyステートメント?)になるかなと思っています。が、違うかも・・・。

具体的にVBAで実現したいことは、マクロを実行すると、

ブラウザ(IE)を起動
⇒Googleのトップページにアクセス(IEのホームにGoogleを設定しないこと!)
⇒そこで「Excel」と投入し、「検索」のボタンを押す
⇒ブラウザ(IE)を閉じる

となることです。
※検索結果はひとまず無視でいいです。

ここまでの流れをVBAで記述し、完全に動かしたいのですが、もしこのように記述すればいいのでは!というのがありましたら、お願い致します。
(すぐに質問を終了したりはしないので宜しくです。最低2日は終了しません。)

●質問者: yoshifuku
●カテゴリ:コンピュータ
✍キーワード:Excel Google IE VBA アクセス
○ 状態 :終了
└ 回答数 : 2/4件

▽最新の回答へ

1 ● pahoo
●35ポイント

こんな感じでどうでしょう。

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

◎質問者からの返答

すごいです!

完璧にできていました!!

参考にします!

勉強になります!


2 ● ardarim
●35ポイント

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ではないケースですが・・・)

もしわかりましたら、追加回答もらえれば幸いです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ