Liệt kê tất cả các file trong foder và tạo links đến từng file trong foder? (1 người xem)

  • Thread starter Thread starter KUMI
  • Ngày gửi Ngày gửi
Liên hệ QC

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

KUMI

Bụi phấn
Tham gia
17/1/12
Bài viết
564
Được thích
571
Xin Chào và CHúc sức khỏe mọi người!
Mọi người cho em hỏi Có cách nào làm được vấn đề này không ạ?
Liệt kê tất cả các file trong foder và tạo links đến từng file trong foder đó?
Chân thành cám ơn!
 

File đính kèm

Upvote 0
A! Em tìm được bài này rồi đúng là rất giống ý em!
www.giaiphapexcel.com/forum/showthread.php?31880-Hỏi-Phầm-mềm-chuyển-các-file-trong-folder-sang-excel-để-dễ-dàng-quản-lý

Nhưng bài này của Thầy Hai Lúa không links được file có tiêu đề tếng việt có dấu nhỉ.
Trong khi đó các file của em hầu hết là bằng tiếng việt có dấu.
Các Thầy có cái tiến gì cho vấn đề này không ạ?

Hàm Dir thì làm sao hổ trợ tiếng Việt Unicode được chứ
Phải là cái này
Mã:
Function GetListFile(ByVal Folder As String, ByVal Search As String, ByVal InSub As Boolean)
  Dim sComm As String, tmp As String, tmpFile, Arr
  On Error Resume Next
  If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
  Folder = """" & Folder & """"
  With CreateObject("Scripting.FileSystemObject")
    tmpFile = .GetTempName
    sComm = "DIR " & Folder & """*" & Search & "*""" & " /ON /B /A-D " & 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 GetListFile = Split(tmp, vbCrLf)
      .Close
    End With
  End With
  Kill tmpFile
End Function
Có điều phải hỏi lại:
- Link đến từng file nghĩa là khi bấm vào link sẽ mở file, đúng không?
- Nếu đúng vậy thì bạn nên biết rằng không phải file nào cũng có thể mở được... chẳng hạn như file .DLL, .OCX vân vân
Vậy bạn muốn LINK theo kiểu nào đây?
Tôi giả định rằng bạn muốn lấy list các file có đuôi xls, vậy ta thêm code này nữa:
PHP:
Sub ListFileAndLinks()
  Dim Arr, fleItem
  Dim sFolder As String
  Dim lR As Long
  On Error Resume Next
  With CreateObject("Shell.Application")
    sFolder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  Range("A:A").Clear
  If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, ".xls", True)
  If IsArray(Arr) Then
    For Each fleItem In Arr
      lR = lR + 1
      With Range("A" & lR)
        .Value = fleItem
        .Hyperlinks.Add .Cells, .Value
      End With
    Next
  End If
End Sub
Nghĩa là cho 2 đoạn code trên vào chung 1 module, xong, chạy sub ListFileAndLinks sẽ có ngay kết quả
 
Lần chỉnh sửa cuối:
Upvote 0
Em Cám ơn Thầy nhiều.
em Thấy kiểu mở file như của Thầy Hai Lúa là rất đúng ý em rồi ạ. Thiếu cái là không links đc file tiếng Việt.
Nhưng Thầy đã giúp Em rồi đó ạ! Nếu vướng mắc gì em sẽ hỏi thêm Thầy sau ạ!
Một lần nữa xin cám ơn Thầy.
 
Upvote 0
Oái code của Thầy không gán được vào cái nút "Liệt kê list" trong file của Thầy Hai Lúa đó sao?
Em muốn thay code của Thầy vào tỏng file của Thầy Hai lúa mà không được.
Mong thầy chỉ giáo thên ạ, Thầy có thể đính kèm thêm file nữa được không ạ?
Cám ơn Thầy!
 
Upvote 0
Oái code của Thầy không gán được vào cái nút "Liệt kê list" trong file của Thầy Hai Lúa đó sao?
Em muốn thay code của Thầy vào tỏng file của Thầy Hai lúa mà không được.
Mong thầy chỉ giáo thên ạ, Thầy có thể đính kèm thêm file nữa được không ạ?
Cám ơn Thầy!

Click phải vào cái nút, chọn Assign Macro, chỉ đến Sub ListFileAndLinks là được rồi
 
Upvote 0
Gửi Thầy!
Em đã thử file của Thầy làm rồi ạ! Đúng như Thầy nói có thể links được các file có tiêu đề tiếng việt. và chỉ links được các file đuôi .xls như code trên Thầy đã viết.

Nhưng ngoài ra Em mong muốn một thêm số vấn đề sau:
+Có thể links được nhiều loại đuôi khác nhau.
+Chỉ lấy tên file thôi (không lấy cả đường dẫn).
+Trước khi liệt kê danh sách file trong foder nếu tích chuột vào ô nào thì danh dách sẽ sổ
Từ ô đó xuống dưới cho đến hết danh sách file.

Những mong muốn trên của Em thì em Thấy file của Thầy Hai Lúa đều thực hiện được
Duy chỉ có cái là không link được file Tiếng việt thôi ạ!
Thầy có thể xem file đính kèm để cái tiến thêm vấn đề link đường dẫn tiếng việt và nhưng vấn đề nào thầy cho là chưa hợp lý lắm được không ạ?
Đây là file đính kèm em đã thử liệt kê một foder file có nhiều loại đuôi :

Em không hiểu gì về VBA nên chưa thể kết hợp được code lấy đường dẫn tiếng việt của Thầy với code của Thầy Hai Lúa được. Mong Thầy giúp đỡ.
 

File đính kèm

Upvote 0
Gửi Thầy!
Em đã thử file của Thầy làm rồi ạ! Đúng như Thầy nói có thể links được các file có tiêu đề tiếng việt. và chỉ links được các file đuôi .xls như code trên Thầy đã viết.

Nhưng ngoài ra Em mong muốn một thêm số vấn đề sau:
+Có thể links được nhiều loại đuôi khác nhau.
.

Trong code của tôi có đoạn
Mã:
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "[COLOR=#ff0000][B].xls[/B][/COLOR]", True)
Chổ màu đỏ ý muốn nói là lấy loại file xls. Bạn sửa lại tùy ý... Ví dụ muốn lấy file word thì sửa thành ".doc" hoặc muốn lấy tất cả các loại file thì sửa thành "*.*"
Những thắc mắc còn lại bạn tự mình nghiên cứu đi ---> Dù sao "mâm cỗ" đã "dọn" rồi
 
Upvote 0
Trong code của tôi có đoạn
Mã:
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "[COLOR=#ff0000][B].xls[/B][/COLOR]", True)
Chổ màu đỏ ý muốn nói là lấy loại file xls. Bạn sửa lại tùy ý... Ví dụ muốn lấy file word thì sửa thành ".doc" hoặc muốn lấy tất cả các loại file thì sửa thành "*.*"
Những thắc mắc còn lại bạn tự mình nghiên cứu đi ---> Dù sao "mâm cỗ" đã "dọn" rồi

Vâng, Em Hiểu Tâm tư của Thầy ạ (phải vật lộn thì mới thành quả được)! Em sẽ cố gắng.
Cám ơn Thầy rất nhiều!
 
Upvote 0
Thưa Thầy!
Em đã vật lộn với bài tập này suốt cả buổi sáng nay
Nhưng kết quả chỉ được bấy nhiêu (Thầy xem file đính kèm ạ)!
Em mới kết hợp được code của Thầy và của Thầy Hai Lúa là lấy đường dẫn tiếng việt
Và liệt kê danh sách từ 1 ô mà mình đã kích chuột từ trước.
Còn một mong muốn nữa là chỉ lấy tên file(không lấy đường dẫn) thì em không sao thực hiện được…híc!
Ngoài ra Em có một thắc mắc là có cách nào không thể liệt kê được file đang ẩn được không ạ?
Ví dụ trong file đính kèm em ẩn file tổng hợp đi nhưng vẫn có thể liệt kê và mở được file này…
Kính Mong Thầy và mọi người giúp đỡ.
 

File đính kèm

Upvote 0
Thưa Thầy!
Em đã vật lộn với bài tập này suốt cả buổi sáng nay
Nhưng kết quả chỉ được bấy nhiêu (Thầy xem file đính kèm ạ)!
Em mới kết hợp được code của Thầy và của Thầy Hai Lúa là lấy đường dẫn tiếng việt
Và liệt kê danh sách từ 1 ô mà mình đã kích chuột từ trước.
Còn một mong muốn nữa là chỉ lấy tên file(không lấy đường dẫn) thì em không sao thực hiện được…híc!
Ngoài ra Em có một thắc mắc là có cách nào không thể liệt kê được file đang ẩn được không ạ?
Ví dụ trong file đính kèm em ẩn file tổng hợp đi nhưng vẫn có thể liệt kê và mở được file này…
Kính Mong Thầy và mọi người giúp đỡ.

Trong Sub ListFileAndLinks có đoạn:
Mã:
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "*.*", [COLOR=#ff0000]True[/COLOR])
Sửa thành:
Mã:
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "*.*", [COLOR=#ff0000]False[/COLOR])
Trong Function GetListFile có đoạn:
Mã:
sComm = "DIR " & Folder & """*" & Search & "*""" & " /ON /B /[COLOR=#ff0000]A-D[/COLOR] " & IIf(InSub, "/S", " ") & " >" & tmpFile
Sửa thành:
Mã:
sComm = "DIR " & Folder & """*" & Search & "*"""  & " /ON /B /[COLOR=#ff0000]A-D-H[/COLOR] " & IIf(InSub, "/S", " ") & " >" &  tmpFile
 
Upvote 0
Web KT

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

Back
Top Bottom