« コマンドラインでExcelファイルのマクロを呼び出す。 | トップページ | コマンドラインからアプリやバッチを非表示で実行する。 »

2007年2月25日 (日)

IEとExplorerの区別(~IE6.0)

Shell.Windows()はwindow?(HTMLWindow?)のコレクションではなく、
IEまたはExplorer(IWebBrowser2)のコレクションです。

必然的に、IEとExplorerを区別したくなりますが、それは間違いです。

IEでもフォルダを開くことができるし、ExplorerでもWebページを開くことができるからです。
(IE6.0まで。IE7.0以降は不可。)

正しくは、フォルダかWebページかを区別します。

Set Shell=CreateObject("Shell.Application")
For Each ie In Shell.Windows()
  If InStr(TypeName(ie.Document),"IShellFolderView") Then
    MsgBox "Explorer" & vbTab & ie.LocationURL
  Else
    MsgBox "IE" & vbTab & ie.LocationURL
  End If
Next

または、

Set Shell=CreateObject("Shell.Application")
For Each ie In Shell.Windows()
  If TypeName(ie.Document)="HTMLDocument" Then
    MsgBox "IE" & vbTab & ie.LocationURL
  Else
    MsgBox "Explorer" & vbTab & ie.LocationURL
  End If
Next

フォルダの場合、バージョンにより名前が異なるので、部分一致で判定します。

« コマンドラインでExcelファイルのマクロを呼び出す。 | トップページ | コマンドラインからアプリやバッチを非表示で実行する。 »