Hướng dẫn liệt kê tên file trong folder ra excel

Thí nghiệm trên lấy toàn bộ file .xls cho vào ListBox. Khi ta chọn vào 1 Item trong ListBox thì nó sẽ mở file đó

Tuy nhiên tôi rất ngạc nhiên:

Khi mở file bằng cách chọn vào ListBox, 1 vài file trong đó có Macro, nhưng lại thấy chẳng cảnh báo gì Vậy là sao? Tôi đang có ý tưởng điều khiển các file con bằng 1 file chủ, chỉ cho phép người dùng thao tác trên file chủ, như vậy dù không muốn thì macro cũng đã được Enable Các bạn nghĩ sao về hiện tượng này?

  • SearchFiles_ByUserForm.xls 32 KB · Đọc: 705

Hướng dẫn liệt kê tên file trong folder ra excel

  • 7

    Thí nghiệm trên lấy toàn bộ file .xls cho vào ListBox. Khi ta chọn vào 1 Item trong ListBox thì nó sẽ mở file đó

Tuy nhiên tôi rất ngạc nhiên:

Khi mở file bằng cách chọn vào ListBox, 1 vài file trong đó có Macro, nhưng lại thấy chẳng cảnh báo gì Vậy là sao? Tôi đang có ý tưởng điều khiển các file con bằng 1 file chủ, chỉ cho phép người dùng thao tác trên file chủ, như vậy dù không muốn thì macro cũng đã được Enable Các bạn nghĩ sao về hiện tượng này?

Những file khác được mở sau, trong khi UserForm còn mở. Do đó, theo em nghĩ, chức năng Enable của Macro sẽ tự động mở!

Anh hãy thử với code mở file sau để thấy sự khác biệt! Mục đích code này là tạo sự riêng biệt giữa hai file excel. [highlight=vb] Private Sub ListBox1_Click() Dim myFile, myPath myPath = ThisWorkbook.Path & "\" & ListBox1.Value myFile = Shell("C:\Program Files\Microsoft Office\Office11\Excel.exe " & myPath, vbNormalFocus) 'Workbooks.Open FileName:=ThisWorkbook.Path & "\" & ListBox1.Value End Sub [/highlight]

Lần chỉnh sửa cuối: 14/12/08

Hướng dẫn liệt kê tên file trong folder ra excel

  • 8

    - Ko biết chủ đề này đã có chưa (Search ko thấy) - Ko biết chủ đề này đặt ở đây có hợp lý ko? (nếu ko hợp, nhờ Mod chuyển dùm) ---------- Đây là 2 đoạn code khá đơn giãn, thích hợp cho những bạn mới tiếp cận với VBA 1> Lấy danh sách tên các file có trong thư mục hiện hành (thư mục chứa file Excel mà ta đang chạy)

PHP:

Option Explicit Sub SeachFiles1() Dim i As Long, MyDir As String Range("A1").CurrentRegion.Offset(1).ClearContents MyDir = ThisWorkbook.Path With Application.FileSearch '.SearchSubFolders = True '<- Tim ca trong thu muc con .LookIn = MyDir '<- Tim trong thu muc này .Filename = "." '<--- Kieu file can tìm

If .Execute() > 0 Then For i = 1 To .FoundFiles.Count [A65536].End(xlUp).Offset(1) = Replace(.FoundFiles(i), MyDir & "\", "") Next i End If MsgBox .FoundFiles.Count & " files found." End With End Sub

Nếu cho đoạn .SearchSubFolders = True vào luôn thì nó sẽ tìm luôn trong các thư mục con 2> Lấy danh sách tên file trong 1 thư mục nào đó tùy ta chọn

PHP:

Option Explicit Sub SeachFiles2() Dim i As Long Range("A1").CurrentRegion.Offset(1).ClearContents With Application.FileDialog(3) .AllowMultiSelect = True: .Show For i = 1 To .SelectedItems.Count [A65536].End(xlUp).Offset(1) = .SelectedItems(i) Next i MsgBox .SelectedItems.Count & " files Selected " End With End Sub

Đã có hướng dẩn trong file, các bạn có thể từ đây tùy biến theo ý muốn! Chẳng hạn tạo thêm Hyperlink hay gì gì đó 2 đoạn code này đều có trong mục Help của Excel VBA, tôi chỉ chỉnh sửa lại đôi chút! Các bạn cứ bôi đen chử FileSearch hoặc FileDialog rồi bấm F1 sẽ thấy Lưu ý: Đoạn code 1 ko hổ trợ Excel 2007 (đơn giãn vì nó chả biết Application.FileSearch nghĩa là cái gì)

Bác Anh Tuấn giúp e thêm tí: Sau khi e bấm vào nút Search File 1 nó sẽ liệt kê toàn bộ danh sách tên file trong thư mục. E muốn danh sách đó là hyperlink có được ko bác? Tức là khi e bấm vào tên file trong list nó sẽ mở đc file đó ra. Bác giúp e với nhé Thanks.

  • 9

    Mình cũng bổ xung thêm 1 sự lựa chọn:

1/Liệt kê toàn bộ các thư mục có trong Path chỉ định:

2/Liệt kê tất cả các File có trong Path chỉ định:

Sao em click vào xem, liệt kê ra hết các file rồi mà không copy được danh sách các file? Cho em hỏi em muốn save lại danh sách file dưới dạng txt hoặc xsl thì làm sao?