2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

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