エクセルの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
No.1ベストアンサー
- 回答日時:
やりたい事は 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
早速のご回答ありがとうございます。
これです。これ。
これをやりたくていろいろ調べて作ってみたのが、質問のところに載せたものです。全然短いプログラムで済んでしまうんですね。
ただ、インターネットのショートカットファイルで「プロシージャの呼び出し、または引数が不正です」となり、止まってしまいますが、これは直せないでしょうか?
宜しくお願いします。
No.2
- 回答日時:
#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 …
papayuka様、何度もすみません。
「On Error Resume Next」で逃げることにします。ファイルシステムオブジェクトについては今後勉強していこうと思います。
お世話になりました。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) エクセルのマクロについて教えてください 物件ごとのフォルダを作成してます そのフォルダ内にサブフォル 2 2023/07/02 17:58
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル(VBA)でファイル...
-
フォルダに「?」マーク
-
ファイル名、パス名の長さの最大
-
Word for Mac で文書保存時に新...
-
隠しフォルダを開いてしまった...
-
マックの壁紙ってどこにあるの...
-
OSXのアップルメニューに「よく...
-
フォルダやファイルの名前
-
SDカード内のフォルダの移動に...
-
Macでフォルダを添付できないで...
-
Finder」の四角い枠の「ツール...
-
デスクトップで「右クリック→新...
-
メールダウンロードフォルダの場所
-
ジニーエフェクト スケールエ...
-
パソコン起動と同時に、ホーム...
-
Macのデスクトップに保存してい...
-
ブックマークの順番を最新順に...
-
iPhoto Libraryの保存形態について
-
かわいいフォルダアイコンを使...
-
タスけてください
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macでフォルダを添付できないで...
-
パソコンHDDごとの暗号化(見ら...
-
デスクトップ上に裸のファイル...
-
ImgBurnで「イメージファイルの...
-
いちいち黒い枠
-
ファイル名、パス名の長さの最大
-
ジニーエフェクト スケールエ...
-
mac デスクトップのファイル名...
-
フォルダ名・ファイル名の書き...
-
フォルダの中に入れた順になら...
-
Cドライブ直下にコピーってどう...
-
エクセル(VBA)でファイル...
-
Windows10でのファイルの並び替...
-
ブックマークの順番を最新順に...
-
右クリック、新規作成にメモ帳...
-
メールの添付ファイル名が長す...
-
フォルダに「?」マーク
-
パソコン起動と同時に、ホーム...
-
Macで今あるファイルの連番(ペ...
-
隠しフォルダを開いてしまった...
おすすめ情報