Tự động cập nhật tên tập tin vào trong Excel (1 người xem)

Liên hệ QC

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

mymichau

Thành viên hoạt động
Tham gia
28/11/06
Bài viết
172
Được thích
114
Em coù 1 file Excel duøng ñeå quaûn lyù taäp tin trong trong 01 Folder.
Coät A, laø danh saùch caùc file trong Folder.
Thöôøng laøm thuû coâng Click 2 laàn taäp tin môùi, copy teân taäp tin vaø paste vaøo coät A.
Vaäy coù caùch naøo töï ñoäng caäp nhaät teân file môùi vaøo trong danh saùch Excel ñöôïc khoâng. Xin caùc anh chæ giuùp. Xin caûm ôn.
 
vd: quan lý file trong ổ D:
Mã:
Sub timkiem()
 Dim tenfile As Long
    With Application.FileSearch
        .LookIn = "D:\"
        For tenfile = 1 To .FoundFiles.Count
            Sheet1.Cells(tenfile, 1) = .FoundFiles(tenfile)
        Next tenfile
    End With
End Sub
Bạn thử xem sao
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Sao em làm vẫn không được, anh Dragonboy làm 1 file ví dụ giúp em với.
 
Upvote 0
Mã:
For tenfile = 1 To .FoundFiles.Count
Sheet1.Cells(tenfile, 1) = .FoundFiles(tenfile)

Test thử:
dòng 1 : FoundFile.Count = 0
dòng 2: Giả sử FoundFile.Count > 0: Cột A từ A1 trở xuống sẽ hiện các số từ 1 đến hết, không hiện tên file (tenfile là biến dạng số)
 
Upvote 0
FileSearch không được hỗ trợ trong Office 2007.
Với Excel 2007 các bạn sử dụng code sau:
Mã:
Option Explicit
 
Public Sub Get_All_Files()
Application.ScreenUpdating = False

Dim i As Double
Dim sFil As String
Dim sPath As String
 
sPath = "D:\"
ChDrive sPath
ChDir sPath
 
sFil = Dir("*.*")
Do While sFil <> ""
    i = i + 1
    sFil = Dir
    Cells(i, 1) = sFil
Loop

Application.ScreenUpdating = True
End Sub
 
Upvote 0
Test Code của anh nvson chạy tốt, nhưng lại mất 1 dòng tên tập tin đầu tiên. VD có 5 tập tin, sau đó tăng thêm 1. Khi chạy sub, thí tập tin số 1 bị mất ( dòng A1)
To ptm0412:
Em chưa hiểu ý của anh, anh test giúp 1 file VD được không? Cảm ơn anh!
 
Lần chỉnh sửa cuối:
Upvote 0
Mình test lại cũng thấy bị thiếu 1 file.
Đây là đoạn code khác, bạn thử xem sao
Mã:
Sub testit()
    myvar = FileList("D:\Internet\Pictures")
    For i = LBound(myvar) To UBound(myvar)
        Cells(i + 1, 1) = myvar(i)
    Next
End Sub
 
 Function FileList(fldr As String, Optional fltr As String = "*.*") As Variant
    Dim sTemp As String, sHldr As String
    If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
    sTemp = Dir(fldr & fltr)
    If sTemp = "" Then
        FileList = Split("No files found", "|")  'ensures an  array is returned
        Exit Function
    End If
    Do
        sHldr = Dir
        If sHldr = "" Then Exit Do
        sTemp = sTemp & "|" & sHldr
     Loop
    FileList = Split(sTemp, "|")
End Function
(Sưu tầm từ http://www.ozgrid.com)
 
Upvote 0
To:NVSON
Như vậy là File dùng cập nhật tập tin được đặt tại dòng 1, sau khi add tập tin mới và chạy Sub thì tập file cập nhật bị mất ( không cần thiết ), còn lại tiếp những tập tin sau thì cập nhật đầy đủ. Cảm ơn anh Nvson nhiều!
 
Upvote 0
To:NVSON
Như vậy là File dùng cập nhật tập tin được đặt tại dòng 1, sau khi add tập tin mới và chạy Sub thì tập file cập nhật bị mất ( không cần thiết ), còn lại tiếp những tập tin sau thì cập nhật đầy đủ. Cảm ơn anh Nvson nhiều!
Code ở bài #5 của nvson bạn đem dòng Cells(i, 1) = SFil lên trước dòng Sfil = Dir là chạy tốt thôi
Mã:
Option Explicit
 
Public Sub Get_All_Files()
Application.ScreenUpdating = False

Dim i As Double
Dim sFil As String
Dim sPath As String
 
sPath = "D:\"
ChDrive sPath
ChDir sPath
 
sFil = Dir("*.*")
Do While sFil <> ""
    i = i + 1
    [COLOR=Red][B]Cells(i, 1) = sFil[/B][/COLOR]
    [COLOR=Red]sFil = Dir[/COLOR]
Loop

Application.ScreenUpdating = True
End Sub
TDN
 
Upvote 0
Xin hỏi tedaynui và cả nvson: Muốn tìm cả trong thư mục con thì sửa thế nào

Đây là cái bạn cần:

https://app.box.com/s/7d481926eaca505c292b

Cách sử dụng:
- Đầu tiên bạn nhấn vào nút "Tìm ổ dĩa và chọn thư mục", cửa sổ Browser xuất hiện, bạn duyệt đến thư mục bạn cần chọn nó và nhấn OK.
- Tiếp theo bạn nhấn vào nút "Lấy Link và hiện tên File trong sheet", chờ trong giây lát là được kết quả.

Bây giờ bạn muốn mở File nào thì bạn duyệt tìm tên File ở cột C, sang cột G nhấn vào Open File để mở File đó.
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là cái bạn cần:

https://app.box.com/s/7d481926eaca505c292b

Cách sử dụng:
- Đầu tiên bạn nhấn vào nút "Tìm ổ dĩa và chọn thư mục", cửa sổ Browser xuất hiện, bạn duyệt đến thư mục bạn cần chọn nó và nhấn OK.
- Tiếp theo bạn nhấn vào nút "Lấy Link và hiện tên File trong sheet", chờ trong giây lát là được kết quả.

Bây giờ bạn muốn mở File nào thì bạn duyệt tìm tên File ở cột C, sang cột G nhấn vào Open File để mở File đó.
Cái này bạn có cách nào tăng tốc thực thi code được không? Vì dữ liệu mình đến gần 10.000 files trong cả trăm thư mục mẹ và con nên load khá lâu.
Dù sao thì cũng cảm ơn sự chia sẻ của bạn. File rất hữu ích
 
Lần chỉnh sửa cuối:
Upvote 0
Đây là cái bạn cần:

https://app.box.com/s/7d481926eaca505c292b

Cách sử dụng:
- Đầu tiên bạn nhấn vào nút "Tìm ổ dĩa và chọn thư mục", cửa sổ Browser xuất hiện, bạn duyệt đến thư mục bạn cần chọn nó và nhấn OK.
- Tiếp theo bạn nhấn vào nút "Lấy Link và hiện tên File trong sheet", chờ trong giây lát là được kết quả.

Bây giờ bạn muốn mở File nào thì bạn duyệt tìm tên File ở cột C, sang cột G nhấn vào Open File để mở File đó.

bạn có thể gửi lại link được không? link không down về được.
 
Upvote 0
Cái này bạn có cách nào tăng tốc thực thi code được không? Vì dữ liệu mình đến gần 10.000 files trong cả trăm thư mục mẹ và con nên load khá lâu.
Dù sao thì cũng cảm ơn sự chia sẻ của bạn. File rất hữu ích

Theo suy luận thì tôi có thể hiểu được trong Folder (cha) của bạn có nhiều Folder (con) và mỗi Folder (con) chứa File của mỗi năm, tháng hoặc mỗi loại.

Tại sao bạn không Insert thêm Sheet mới sau khi lấy Link của mỗi Folder (con) xong thì Copy nó sang Sheet mới và đặt tên sheet theo mỗi Folder (con), tất cả các Link ở sheet mới Copy sang bạn vẫn mở được File bình thường.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom