• ベストアンサー

コードの意味が分からないので教えてください。

Sub Test1() Dim objShell As Object Dim objWin As Object Set objShell = CreateObject("Shell.Application") For Each objWin In objShell.Windows Debug.Print objWin Next End Sub のコードを実行すると、 ・Microsoft Internet Explorer ・Windows Internet Explorer が取得されるのですが、 これは何が取得されてるのでしょうか? IEブラウザとフォルダですか? IEブラウザは3つ フォルダは5つ 立ち上げてますが このコードを実行すると、 Microsoft Internet Explorer は、4つ Windows Internet Explorer は、3つ取得されます。 OSはXPです。ご回答よろしくお願いします。

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

  • ベストアンサー
  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.1

知識がある方の回答が付かないので、答えさせていただきます。 この方面についての当方の知識が貧弱なため不正確なところがあるかもしれませんが、そこのところはご承知置きください。 objWinはInternetExplorerオブジェクトになっているようです。 といってもこれはブラウザだけでなくフォルダも含まれるようです。 (MSDNによると、ShellオブジェクトのメンバWindowsはShellWindowsオブジェクトを返す、となっています。ShellWindowsオブジェクトの解説の最初の方に、開いているShellのウィンドウのコレクションだと書いてあるのですが、少し下の方に、ItemはInternetExplorerオブジェクトを取得する、と書いてあります。) Debug.Print objWin と書くと、.Name を省略したものとみなされるようです。 Nameプロパティですが、アプリケーション名を取得する、となっています。 質問者様の実行結果では、 Microsoft Internet Explorer Windows Internet Explorer の2種類の値がありますが、 Microsoft Internet Explorer がフォルダ、 Windows Internet Explorer がIE7以降のブラウザのようです。 ちなみにIE6だとブラウザも Microsoft Internet Explorer になります。 フォルダが5個なのにMicrosoft Internet Explorerが4つしかない理由はわかりません。 http://msdn.microsoft.com/ja-jp/library/windows/desktop/bb774094%28v=vs.85%29.aspx http://ie.vba-ken3.jp/Property/

BUGONJC
質問者

お礼

ありがとうございます。

関連するQ&A

専門家に質問してみよう