dポイントプレゼントキャンペーン実施中!

エクセルのVBAであるフォルダ以下の全てのファイル名と更新時間をエクセルシート上に表示させたく、以下のプログラムを作成したのですが 、サブフォルダ内のファイルを表示させることができません。何か良い方法がありましたら教えていただけないでしょうか?宜しくお願いいたします。
Sub SAMPLE()
Dim serchPass As String
j = 1
Mypath = "C:\My Documents\"
MyName = Dir(Mypath, vbDirectory)
Do While MyName <> "" ' ループを開始します。
' 現在のフォルダと親フォルダは無視します。
If MyName <> "." And MyName <> ".." Then
' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
If (GetAttr(Mypath & MyName) And vbDirectory) = vbDirectory Then
Debug.Print MyName ' フォルダであれば、それを表示します。
Else: GoTo 10
End If

serchPass = Mypath & MyName
With Application.FileSearch
.NewSearch
.LookIn = serchPass
If .Execute() > 0 Then
For i = 1 To .FoundFiles.Count
Cells(i + j, 1).Value = .FoundFiles(i)
Cells(i + j, 3) = FileDateTime(.FoundFiles(i))
Next i
j = i + j
End If
End With
10
End If

   MyName = Dir ' 次のフォルダ名を返します。
Loop
End Sub

A 回答 (2件)

やりたい事は FileSearch で .SearchSubFolders = True にするのと違う事でしょうか?


Sub Test()
Dim i as Long
 With Application.FileSearch
  .NewSearch
  .LookIn = "C:\My Documents"
  .FileType = msoFileTypeAllFiles
  .SearchSubFolders = True
  If .Execute() > 0 Then
   For i = 1 To .FoundFiles.Count
    Cells(i + 1, 1) = .FoundFiles(i)
    Cells(i + 1, 3) = FileDateTime(.FoundFiles(i))
   Next i
  End If
 End With
End Sub
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
これです。これ。
これをやりたくていろいろ調べて作ってみたのが、質問のところに載せたものです。全然短いプログラムで済んでしまうんですね。
ただ、インターネットのショートカットファイルで「プロシージャの呼び出し、または引数が不正です」となり、止まってしまいますが、これは直せないでしょうか?
宜しくお願いします。

お礼日時:2003/10/13 08:30

#1です。



ショートカットの場合 FileSearch の FoundFiles には、ショートカット先のパス(やURL)が返るようです。
ショートカットファイルそのものを取得する方法は知りません。

 For i = 1 To .FoundFiles.Count
  On Error Resume Next
  Cells(i + 1, 1) = .FoundFiles(i)
  Cells(i + 1, 3) = FileDateTime(.FoundFiles(i))
 Next i

のように逃げるとか。。

あと、私自信は使った事ないのですが、ファイルシステムオブジェクトを使うと FileSearch よりもっと高度な事が出来るようですよ。

http://www6.plala.or.jp/MilkHouse/practical/cont …

参考URL:http://www6.plala.or.jp/MilkHouse/practical/cont …
    • good
    • 0
この回答へのお礼

papayuka様、何度もすみません。
「On Error Resume Next」で逃げることにします。ファイルシステムオブジェクトについては今後勉強していこうと思います。
お世話になりました。ありがとうございました。

お礼日時:2003/10/13 16:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!