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 ạ?
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
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
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!
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.
.
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "[COLOR=#ff0000][B].xls[/B][/COLOR]", True)
Trong code của tôi có đoạn
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 "*.*"Mã:If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "[COLOR=#ff0000][B].xls[/B][/COLOR]", True)
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
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 đỡ.
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "*.*", [COLOR=#ff0000]True[/COLOR])
If TypeName(sFolder) = "String" Then Arr = GetListFile(sFolder, "*.*", [COLOR=#ff0000]False[/COLOR])
sComm = "DIR " & Folder & """*" & Search & "*""" & " /ON /B /[COLOR=#ff0000]A-D[/COLOR] " & IIf(InSub, "/S", " ") & " >" & tmpFile
sComm = "DIR " & Folder & """*" & Search & "*""" & " /ON /B /[COLOR=#ff0000]A-D-H[/COLOR] " & IIf(InSub, "/S", " ") & " >" & tmpFile