Duyệt file (folder) trong 1 folder cho trước và tạo Hyperlink

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Xét thấy nhiều bạn có nhu cầu duyệt file hoặc folder rồi tạo Hyperlink trên sheet.
Gần đây lại có 1 bạn khơi lại chủ đề này:
[URL='https://www.giaiphapexcel.com/forum/showthread.php?81354-Nh%E1%BB%9D-Link-foder-trong-trong-excel-']https://www.giaiphapexcel.com/forum/showthread.php?81354-Nhờ-Link-foder-trong-trong-excel-!
www.giaiphapexcel.com/diendan/threads/81354/
Bạn ấy lại muốn code có khả năng vừa duyệt file lại vừa duyệt folder nên tôi quyết định tiến hành xây dựng file và cuối cùng cũng hoàn tất
Giao diện chương trình như sau:

1819

Với file này, các bạn có thể lưu thành Add-In và khi gọi Add-In lên các bạn sẽ nhìn thấy 1 button trên menu bar (hoặc Ribbon). Bấm vào button thì form sẽ xuất hiện (như hình trên)
Khi lưu thành Add-In, các bạn sẽ được "khuyến mãi" thêm hàm lấy file, folder như sau

Function FilesFoldersList(ByVal RootFolder As String, ByVal ListType As Boolean, _
                          ByVal Search As String, ByVal InSub As Boolean)
  'ListType = True: Get Files list
  'ListType = False: Get Folders list
  Dim sComm As String, tmp As String, str As String, tmpFile, Arr
  On Error Resume Next
  If Right(RootFolder, 1) <> "" Then RootFolder = RootFolder & ""
  str = """" & RootFolder & IIf(ListType, Search, "") & """"

With CreateObject("Scripting.FileSystemObject")
    tmpFile = .GetTempName
    sComm = "DIR " & str & " /ON /B /A" & IIf(ListType, "-", "") & "D[COLOR=#ff0000][B]-S[/B][/COLOR]" & IIf(InSub, "/S", " ") & " >" & tmpFile
    CreateObject("Wscript.Shell").Run "cmd /u /c " & sComm, 0, True
    With .OpenTextFile(tmpFile, 1, , -2)
      tmp = Trim(.ReadAll)
      If Right(tmp, 2) = vbCrLf Then tmp = Left(tmp, Len(tmp) - 2)
      If Len(tmp) Then
        If InSub = False Then tmp = RootFolder & Replace(tmp, vbCrLf, vbCrLf & RootFolder)
        FilesFoldersList = Split(tmp, vbCrLf)
      End If
      .Close
    End With
  End With
  Kill tmpFile
End Function

Có thể gõ hàm trực tiếp trên sheet theo cú pháp:

=FilesFoldersList([COLOR=#ff0000]Tên thư mục[/COLOR], [COLOR=#ff8c00]list file hay folder?[/COLOR], [COLOR=#008000]từ khóa[/COLOR], [COLOR=#0000cd]có lấy trong folder con hay không?[/COLOR])

Ví dụ:
=FilesFoldersList("D:Excel", True, "*.xlsm", True)
Có nghĩa là: Bạn muốn tìm trong thư mục "D:Excel" các file có đuôi .xlsm và lấy list trong các folder con luôn
Kết quả trả về của hàm trên là mảng 1 chiều chưa các file hoặc folder liên quan
————————————————
Lưu ý: Trong code chính, chổ màu đỏ (-S) nhằm mục đích loại bỏ các file hoặc folder hệ thống (tránh nguy hiểm). Nếu các bạn có nhu cầu lấy luôn các file folder hệ thống thì cứ xóa cái -S ấy đi là được
————————————————
Rất mong nhận được sự cải tiến, đóng góp của các bạn để chương trình được hoàn thiện hơn
Cảm ơn!

www.giaiphapexcel.com/diendan/threads/duy%E1%BB%87t-file-folder-trong-1-folder-cho-tr%C6%B0%E1%BB%9Bc-v%C3%A0-t%E1%BA%A1o-hyperlink.81824/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm