@IT会議室 新規書き込み停止(2012年10月9日)のお知らせ

@ITの会員制度「@ITクラブ・メンバーシップ」(@ITクラブ)は、10月9日より、弊社が運営するメディアの共通会員制度である「アイティメディアID」へ移行することになりました。これに伴い、@ITクラブのサービスの一部を変更させていただきます。

@IT会議室については、2012年10月9日をもって新規書き込みを終了いたしました(閲覧は引き続き可能です)。今後、質問や回答などは「QA@IT」(http://qa.atmarkit.co.jp/)をご利用くださいますよう、お願い申し上げます。

IEを既定としない状態でも開くようにする。


sensen

2010-03-01 15:31

お世話になっております。
以前、IEが開いていたら、新しいタブで開くするにはどのようにすればよいか?
という質問をし、下記のようなコードを書きました。

Dim ShellWindows As Object
ShellWindows = GetObject("new:9BA05972-F6A8-11CF-A442-00A0C90A8F39")
For Each IEWEB As Object In ShellWindows
IEWEB.Navigate(arg1, &H800)
Exit For
Next

最初にテストした段階では、うまくIEが開いていたら新しいタブ開いていたのですが、
他のPCでテストしたところ、FireFoxで新しいタブを開いてしまいました。
原因はIEを既定としていなかったからです。

IEを既定としていない状態でもIE操作するにはどのようにすればよろしいでしょうか。
新規でIEを立ち上げる方法は分かりますが、IEを指定し、新しいタブで開く方法が思いつきません。

GetObjectの指定をIEにすればできるのでは?
と思い、色々ググッてみて、

GetObject("internetexplorer.application")

とかを試してみたのですが、動作自体しませんでした。

困っています。ご教授お願いいたします。

コメント

2010-03-01 23:12

良くは分かりませんが、まず、IE のウィンドウは列挙できていて FireFox を捉えているわけではないような気がします。たとえば IEWEB.Name は "Microsoft Internet Explorer" のような文字列ですか?それとも "FireFox" のような文字列になってますか?
おそらく列挙して取得した IE に対して Navigate しても、IE が使われずに既定のブラウザーが使われてしまう状況なのだろうと思います。私は Navigate の &H800 の引数の仕組みなどは分からないので、これ以上は分かりませんが。
(もしも IEWEB.Name が "FireFox" になるような状況ならば、お考えのように IE を起動すれば良いのかもしれません。たとえば CreateObject("InternetExplorer.Application") のような感じで。)