プロが教えるわが家の防犯対策術!

エクセルもしくはAccessでマクロを使って指定したパスの中にあるデータ(ファイル)の名前を一覧にして取得したいのです。
ただ、フォルダが存在する場合その中にあるファイルも取得したいです。もちろん重くなるし、膨大なデータになるのは承知の上です。

ファイルA
 L XXX.PNG
YYY.JPG
ZZZ.PDF



ファイルA’
    L CCC.PNG
      DDD.JPG
   ・
   ・
   ・


これを
XXX.PNG
YYY.JPG
ZZZ.PDF
CCC.PNG
DDD.JPG



みたいな感じにしたいです。(ことばでは表せなさそうなので)

A 回答 (3件)

excel のマクロです。



以下のマクロを標準モジュールに登録してください。
A1セルに取得開始のフォルダ名を記入してください。
例 c:\sample
A2以降にc:\sampleの下のファイル一覧が再帰的に表示されます。
-------------------------------------------------
Option Explicit
Dim write_row As Long
Public Sub フォルダ内ファイル一覧取得()
Dim folder As String
Dim maxRow As Long
folder = Range("A1").Value
maxRow = Cells(Rows.Count, "A").End(xlUp).Row
Range("A2:A" & maxRow).Value = ""
write_row = 2
Call getFileList(folder)
MsgBox ("完了")
End Sub

Sub getFileList(ByVal folder As String)
Dim FSO As Object
Dim oFile As Object
Dim oFolder As Object
Dim pos As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
'ファイル名の取得
For Each oFile In FSO.GetFolder(folder).Files
pos = InStrRev(oFile.Path, "\")
'ファイル名を書き込む
Cells(write_row, "A").Value = Right(oFile.Path, Len(oFile.Path) - pos)
write_row = write_row + 1
Next
'サブフォルダ取得
For Each oFolder In FSO.GetFolder(folder).SubFolders
Call getFileList(oFolder.Path)
Next
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。とても重宝しています。
シンプルでとても良いです。

お礼日時:2021/02/08 18:54

こんにちは



探せばどこかに転がっていそうな内容ですが・・・

※ 最初にアクティブシートをクリアしてから書き出しますので、ご注意。
※ ダイアログからフォルダを選択すると、その中のフォルダ・ファイル一覧が書き出されます。
※ 標準モジュールにコピペの上、FilesListを実行してください

Sub FilesList()
Dim folderPath As String

With Application.FileDialog(msoFileDialogFolderPicker)
 .Show
 If .SelectedItems.Count = 0 Then Exit Sub
 folderPath = .SelectedItems(1)
End With

ActiveSheet.Cells.Clear
Call fList(folderPath, Cells(1, 1))
End Sub


Sub fList(ByVal P As String, ByRef R As Range)
Dim FSO, F, folders, folder, files, file

Set FSO = CreateObject("Scripting.FileSystemObject")
Set F = FSO.GetFolder(P)
R.Value = F.Name
Set R = R.Offset(1, 1)

For Each folder In F.SubFolders
 Call fList(folder.Path, R)
 Set R = R.Offset(, -1)
Next folder

For Each file In F.files
 R.Value = file.Name
 Set R = R.Offset(1)
Next file
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。とても重宝しています。
利便性が高いですね。

お礼日時:2021/02/08 18:54

ファイルA、ファイルA’


はフォルダのことですか?

L XXX.PNGの
左のLはなんですか?
    • good
    • 0
この回答へのお礼

ファイルA A'はフォルダです。
L はフォルダのなかのフォルダを示すために表示しました。わかりにくくてすいません。

お礼日時:2021/02/07 20:11

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