Folderオブジェクトでsubfoldersプロパティが使えない
Excel2000のVBAで、ユーザーがダイアログで選択したフォルダのサブフォルダのコレクションを取得しようとしています。
次のようなコード1にしたら、oFolderオブジェクトでは「Subfoldersプロパティをサポートしていない」旨のエラーが出ます。そこで、もう一段関数をかませて、その関数中でSet oFileSys = CreateObject("Scripting.FileSystemObject")
Set folder1 = oFileSys.GetFolder(folder_name)のようにして、別途folderオブジェクトを作成し、コード1の「colFolder」へ返すようにしてみたところ、うまく動きました。下記コード1中の「oFolder」と上の関数内の「folder1」は、いずれもFolderオブジェクトなのに、プロパティの種類が違うのはなぜでしょうか?
ちなみに、オブジェクトブラウザで調べると、Folderクラスには、subfoldersプロパティというのが確かにありません!が、VBのヘルプにはしっかりとFolderオブジェクトの中にSubfoldersプロパティが載っています。
<コード1>
Function フォルダ選択(メッセージ As String) As Object
Dim oShell As Object,oFolder As folder,colFolder As Object
Set oShell = CreateObject("Shell.Application")
Set oFolder = oShell.BrowseForFolder(0, メッセージ, 1, "S:\")
If Not (oFolder Is Nothing) Then
Set colFolder = oFolder.subfolders
Set フォルダ選択=colFolder
Else
MsgBox "フォルダを選択しないと継続できません。"
End;End If;END SUB
お礼
ご回答ありがとうございます。