[Trợ giúp] Liệt kê tên file trong SubFolder và Folder (1 người xem)

Người dùng đang xem chủ đề này

quyenpv

Thu nhặt kiến thức
Tham gia
5/1/13
Bài viết
729
Được thích
101
Giới tính
Nam
Nghề nghiệp
Decode cuộc đời!
Mình đang muốn thống kê dữ liệu trong từng thư mục theo yêu cầu dạng cây, nhờ các anh chị viết giúp với ạ. Đại loại liệt kê file và tạo liên kết như hình vẽ dưới, mong các anh chị giúp đỡ!
project
|_tags
| |_folder2*
| |_command.txt*
|_branches
| |_folder1
| |_folder1.1*
| |_Notes.docx*
 

File đính kèm

  • Capture.PNG
    Capture.PNG
    5.8 KB · Đọc: 111
Lần chỉnh sửa cuối:
Nhờ Mod sửa giúp tiêu đề [h=2]Liệt kê tên file trong SubFolder và Folder dạng cây hộ em với ạ[/h]
 
Upvote 0
Bạn dùng thử nhé. Add file xla vào excel hiện hữu và dùng file "List file tool - copy" để gọi Menu "list files tool" trong Add-ins.

File này mình cũng sưu tầm và chỉnh lại đôi chút.

Chúc thành công
 

File đính kèm

Upvote 0
Mình tìm được code này tuy nhiên không theo ý mình. Nhờ các Bro sửa giúp tạo hyperlink đến Folder, SubFolder và file với ạ
Mã:
Option Explicit


'''''''''''''''''''''''''''''''''''''''''''''''''


Sub CreateList()


    Dim FSO As Scripting.FileSystemObject
    Dim TopFolderName As String
    Dim DestCell As Range
    Dim Fldr As Scripting.Folder
    Dim TopFldr As Scripting.Folder
    Dim Fi As Scripting.File
    Dim Indent As Long
    Dim ShowFiles As Boolean
    Dim SortBy As Office.MsoSortBy
    Dim SortOrder As Excel.XlSortOrder
       
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    ' Setup Options
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Dim myDir As String, myList()
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = True Then
            TopFolderName = .SelectedItems(1)
        End If
    End With
    On Error Resume Next


    If Err = 0 Then
  
    
    'TopFolderName = myDir 'change to top directory
        
    Workbooks.Add    ' Them file moi
    
    Indent = 1       ' = 1 to ident in tree, = 0 for no indent
    ShowFiles = True ' = true to list files, = false to list only folders
    SortBy = msoSortByLastModified  ' how to sort files
    SortOrder = xlAscending         ' sort order
    Set DestCell = Range("A1")      ' where to start tree
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    
    Application.ScreenUpdating = False
    


    
    Set FSO = New Scripting.FileSystemObject


    DestCell.Value = TopFolderName
    Set DestCell = DestCell(2, 1)
    Set TopFldr = FSO.GetFolder(TopFolderName)
    
    For Each Fldr In TopFldr.SubFolders
        DoTree DestCell, Fldr, Indent, ShowFiles, SortBy, SortOrder
    Next Fldr
    
    If ShowFiles = True Then
        Set DestCell = DestCell(2, Indent + 1)
        DoFiles TopFldr, DestCell, SortBy, SortOrder
    End If
    Set FSO = Nothing
    
    Else
        MsgBox "No file found"
    End If
    On Error GoTo 0
    
    
    Application.ScreenUpdating = True
End Sub




Private Sub DoTree(Rng As Range, Fldr As Scripting.Folder, _
            Indent As Long, ShowFiles As Boolean, _
            SortBy As MsoSortBy, SortOrder As Excel.XlSortOrder)
    Dim F As Scripting.Folder
    Rng(1, 1).Value = Fldr.Name
    Rng(1, 1).NumberFormat = "General"
    Rng(1, 1).Font.ColorIndex = 11
    Rng(1, 1).Font.Bold = True
    For Each F In Fldr.SubFolders
        Set Rng = Rng(2, Indent + 1)
        DoTree Rng, F, Indent, ShowFiles, SortBy, SortOrder
        Set Rng = Rng(0, 1 - Indent)
    Next F
    If ShowFiles = True Then
        Set Rng = Rng(2, Indent + 1)
        DoFiles Fldr, Rng, SortBy, SortOrder
        Set Rng = Rng(2, 1 - Indent)
    Else
        Set Rng = Rng(2, 1)
    End If
End Sub


Private Sub DoFiles(F As Scripting.Folder, Rng As Range, _
        SortBy As MsoSortBy, SortOrder As Excel.XlSortOrder)
    Dim Fi As Scripting.File
    Dim R1 As Range
    Dim R2 As Range
    Dim Key As Range
    
    Set R1 = Rng


    For Each Fi In F.Files
        Rng(1, 1).Value = Fi.Name
        Rng(1, 1).NumberFormat = "General"
        Rng(1, 2).Value = Fi.DateLastModified
        Rng(1, 2).NumberFormat = "dd-mmm-yyyy hh:mm:ss"
        Rng(1, 3).Value = Fi.Size
        Rng(1, 3).NumberFormat = "#,##0"
        Rng(1, 4).Value = Fi.Type
        Rng(1, 4).NumberFormat = "General"
        Set Rng = Rng(2, 1)
    Next Fi
    Set R2 = Rng
    Select Case SortBy
        Case msoSortByFileName
            Set Key = R1
        Case msoSortBySize
            Set Key = R1(1, 3)
        Case msoSortByFileType
            Set Key = R1(1, 4)
        Case msoSortByLastModified
            Set Key = R1(1, 2)
        Case Else
    End Select
    If Not Key Is Nothing Then
        Range(R1, R2).EntireRow.Sort key1:=Key, order1:=SortOrder
    End If
    
End Sub
 

File đính kèm

Upvote 0
Mình đang muốn thống kê dữ liệu trong từng thư mục theo yêu cầu dạng cây, nhờ các anh chị viết giúp với ạ. Đại loại liệt kê file và tạo liên kết như hình vẽ dưới, mong các anh chị giúp đỡ!
project
|_tags
| |_folder2*
| |_command.txt*
|_branches
| |_folder1
| |_folder1.1*
| |_Notes.docx*

Nếu bạn muốn cấu trúc kiểu cây như thế này, sao không thử dùng lệnh này trong windows command line ( vào Start/ chọn Run .../ gõ cmd / bấm Enter).
Mã:
tree /f > output.txt

---UPDATE1---
Mã:
tree /a /f > output.txt
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu bạn muốn cấu trúc kiểu cây như thế này, sao không thử dùng lệnh này trong windows command line ( vào Start/ chọn Run .../ gõ cmd / bấm Enter).
Mã:
tree /f > output.txt

Hầu hết các câu hỏi trong diễn đàn này, người ta muốn ăn phở thì bạn phải dọn phở, bạn dọn mì xào dòn người ta không biết ăn.

Đó là chưa kể đến trường hợp muốn ăn phở nhưng lúc mở miệng thì gọi hủ tiếu.
 
Upvote 0
Hầu hết các câu hỏi trong diễn đàn này, người ta muốn ăn phở thì bạn phải dọn phở, bạn dọn mì xào dòn người ta không biết ăn.

Đó là chưa kể đến trường hợp muốn ăn phở nhưng lúc mở miệng thì gọi hủ tiếu.

Em không hiểu rõ lắm so sánh của bác ở đây.
Nói về chuyện ăn uống, tiêu hoá thì ăn cũng là thưởng thức, thế nên người ta thường thích "của ngon vật lạ", thích thử cái mới. Ăn mãi 1 món cũng chán.

-> Xét cho cùng thì VBA, excel hay gì cũng là 1 công cụ. Mà công cụ là để giải quyết công việc, nếu cái nào phục vụ mục đích nhanh gọn thì ta dùng.
-> Nếu lúc nào trước 1 hay nhiều vấn đề chúng ta chỉ có 1 công cụ duy nhất thì cũng giống như việc chúng ta chỉ có chiếc búa trong tay và chúng ta sẽ "nhìn mọi thứ như 1 cái đinh" và đôi khi chiếc búa là không cần thiết :)
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom