• ベストアンサー

vbaでIEを閉じるだけの処理

オフィス2003を使用しています。 「IEを開いて閉じる」は Sub TEST() Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True '見えるようにする '文字列で指定したURLに飛ぶ ObjIE.navigate "http://www.yahoo.co.jp/index.html" '表示終了まで待つ Do While ObjIE.Busy = True DoEvents Loop ObjIE.Quit End Sub と言うことがわかったのですが 開くのは他の作業をしたときに行うので 「閉じる」だけをvbaで行いたいのですがどうすればいいのかわかりません。 Sub TEST2() Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True '見えるようにする ObjIE.Quit End Sub だと また新たなIEが起動してしまい「現在起動しているIEを閉じる」と言うことができません。 アドバイスをお願い致します。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

質問のコードだと、自分で別のIEを開いて、それを閉じてるだけでは。 今開いているIE(1つとしても)を、プログラムで捉えて、閉じないと質問の主旨では無いでしょう。 だから「今開いているIEを捉える方法(コード)は」と質問の表現を改めて質問しないとダメでしょう。 ObjIE.QuitのObjIEが捉えられれば、ObjIE.Quit で終わり。 あとはObjectの破棄をする。 ーー #1で、既にご回答は出ていますが。 ーーーー WEB上で、ほぼ下記のようなのを見つけて改変。 Sub test02() Set aShell = CreateObject("Shell.Application") Set wcobj = aShell.Windows For Each wobj In wcobj If wobj.FullName Like "*iexplore.exe" = True Then MsgBox wobj.LocationURL If wobj.LocationURL = "http://www.google.co.jp/" Then wobj.Quit End If End If Next End Sub これでGoogle画面だけ閉じた。参考になれば。

noname#150498
質問者

お礼

試してみたらできました!ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 いくつか方法はありますが、 こんな方法が簡単では? ただ、Vista + IE 7 だと、オプションを変更しないと、うまく行かない可能性があります。 Sub Test1() Dim objShell As Object Dim objWin As Object Set objShell = CreateObject("Shell.Application") For Each objWin In objShell.Windows If TypeName(objWin) = "IWebBrowser2" Then  Set objIE = objWin  objIE.Quit End If Next End Sub

noname#150498
質問者

お礼

できました! ご回答ありがとうございます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 複数のタブを開きたい IE

    IE9を使っています。 画像のようにタブを二つ開くにはどうすればいいでしょうか? Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub だと一つのタブしか開けません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" objIE.Navigate2 "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub にしても1つのタブしか開けないです。 ご回答よろしくお願いします。

  • vbaでIEの操作

    こんばんは。やりたいことができないので教えてください。 vbaで指定のurlを開きたいです。 エクセル2003とIE8です。 Sub test001() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.navigate "http://jp.msn.com/" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop End Sub これでIEを立ち上げてURLを開けるのですが これでは新しいウインドウで開いてしまいます。 現在IEを立ち上げていて、上記のコードを実行すると 新たなタブで開きたいですが解決策はありますか? ObjIE.Visible = True が原因かと思い、これを抜かしてみましたが そうすると何も起こりません。 VBAで既に開いているIEの新しいタブでURLを開く方法をご教授ください!よろしくお願いします。

  • VBAでIE操作をするサンプル

    VBAでIE操作をするサンプルをネットでいくつか見ているのですが Sub Sample1() Dim objShell As Object Dim objIE As New InternetExplorer Set objShell = CreateObject("Shell.Application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing Set objShell = Nothing End Sub Sub Sample2() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.yahoo.co.jp/" Set objIE = Nothing End Sub ではどちらを使った方がいいのでしょうか? 圧倒的にSample2の方がネットでは多いのですが Sample1のやり方もあることを知りました。 Sample1の方法でブラウザを開くメリットはあるのでしょうか?

  • VBAからIEの操作

    グーグルをIEで開いてVBA(語句)を検索して見終わったら IEを閉じる作業をしたいのですが、検索窓にVBA(語句)を 入力するところでエラーとなります。初心者ですが、なんとか 勉強したいのでよろしくお願いいたします。 Sub ie_test_Navigate() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" IE.document.all.q.Value = "VBA" IE.document.all.btnG.Click If MsgBox("IEを閉じますか?", vbYesNo, "終了確認") = vbYes Then objIE.Quit End If Set objIE = Nothing End Sub

  • IEではなくファイアフォックスを指定することは

    VBAでブラウザを開く場合、 IEではなくファイアフォックスを指定することは可能ですか? 既定のブラウザはIEにしています。 Sub test1() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.ocn.ne.jp/" objIE.Visible = True Set objIE = Nothing End Sub の Set objIE = CreateObject("InternetExplorer.Application") の部分を Set objIE = CreateObject("firefox.exe") に変えてみたら、 【ActiveX コンポーネントはオブジェクトを作成できません。(Error 429)】 になりました。

  • VBAでIE操作ができない エラーになる

    vista+オフィス2007です。 エクセルで --------------------------------------------------------- Sub ie_test() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.google.co.jp/" End Sub --------------------------------------------------------- を実行したいのですができません。 Set objIE = CreateObject("InternetExplorer.Application") の部分で、しばらく固まり、その後 「実行時エラー'-2147467259(80004005)': オートメーションエラーです。 エラーを特定できません」 と表示されてしまいます。 前にvista+オフィス2003の時は 上記のコードで問題なく動作しました。 2007でも動く方法を教えてください。ご回答よろしくお願いします。

  • ie 64bit 32bit どちらが開いてる?

    Sub Sample() Dim objIE As InternetExplorer Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True ObjIE.Navigate "http://www.yahoo.co.jp/" Set ObjIE = Nothing End Sub で、vbaからieを開いた場合、64bit 32bitのどちらで開かれるのでしょうか? 私の環境はwin7、IE9です。

  • 現在表示されているURLを取得したいのですが

    Sub test1() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop Debug.Print objIE.Navigate Set objIE = Nothing End Sub //////////////////////////////////////////////// をやろうとすると、 Debug.Print objIE.Navigate の部分で、「引数は省略できません。」とエラーになります。 どう修正すればいいか教えてください。 ("http://www.goo.ne.jp/"はダミーです)

  • ie操作 ローカルパスだとエラーになる

    ヤフーなら問題なくコードが動くのに、URLがローカルのパスだと、エラーになってしまいます。 具体的には、 *********************************************************** Sub Sample1() Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate "http://www.yahoo.co.jp/" objIE.Visible = True Do Until objIE.ReadyState = 4 Loop Do While objIE.Busy = True DoEvents Loop End Sub *********************************************************** だと、問題なく実行されるのに、 *********************************************************** Sub Sample2() strFName = MyDesktop & "\index.html" Set objIE = CreateObject("InternetExplorer.Application") objIE.Navigate strFName objIE.Visible = True Do Until objIE.ReadyState = 4 Loop Do While objIE.Busy = True DoEvents Loop End Sub ------------------------- Function MyDesktop() Dim WSH As Variant Set WSH = CreateObject("Wscript.Shell") MyDesktop = WSH.SpecialFolders("Desktop") Set WSH = Nothing End Function *********************************************************** だと、 Do Until objIE.ReadyState = 4 で オートメーションエラー 起動されたオブジェクトはクライアントから切断されました。 となります。 なぜローカルだと、エラーになるのでしょうか? 何が違うのでしょうか?

  • IE操作 StatusTextの文字を取得したい

    現在IE9を使っています。 IE8なら、添付画像の赤で囲った部分に "ページが表示されました"と表示されますが、IE9では表示されません。 ここに文字を表示し、文字を取得するにはどうすればいいでしょうか? ************************************* Sub Sample() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.goo.ne.jp/" objIE.StatusText = True '意味ないっぽい Debug.Print objIE.StatusText objIE.Quit Set objIE = Nothing End Sub ************************************* これでは取得されませんでした。 Do DoEvents Loop Until objIE.StatusText = "ページが表示されました" のように、ページが表示されたら、次のコードに進む・・・とやりたいです。

このQ&Aのポイント
  • パナソニックのHC-W590MのビデオカメラをEMP-822のプロジェクターで見るために接続方法を知りたい。
  • ビデオコード(ミニプラグ)を買って接続したが、反応しない問題について解決方法を教えてほしい。
  • EPSON社製品のEMP-822プロジェクターでパナソニックのHC-W590Mビデオカメラを使用するための接続方法を教えてください。
回答を見る

専門家に質問してみよう