Làm thế nào liệt kê danh mục folder trong 1 folder! (1 người xem)

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

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

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Làm thế nào liệt kê danh mục folder trong 1 folder!
Tôi muốn làm 1 code liệt kê các folder có trong 1 folder mà chưa làm được.
Ví dụ: Tôi có folder Soft (D:\Soft), tôi muốn liệt kê các folder có trong D:\soft và gắn vào bảng tính.
Tôi thử dùng code sau nhưng khi thay myPath = "D:\soft" thì không được.
Nhờ các bạn HD. Xin cám ơn!

PHP:
Option Explicit
Private Sub Form_Load01()
Dim MyFile, myPath, MyName, i
    myPath = "D:\" ' Gan MyPath '"
    MyName = Dir(myPath, vbDirectory) ' Gan MyName= ten thu muc dau tien trong MyPath'
    i = 1
    Do While MyName <> "" ' Bat dau vong lap'
      'Bo qua cac thu muc hien tai va thu muc xung quanh'
        If MyName <> "." And MyName <> ".." Then
          ' Su dung su so sanh phan theo Bit de chac chac MyName la mot thu muc'
            If (GetAttr(myPath & MyName) And vbDirectory) = vbDirectory Then
              Sheet3.Cells(i, 1) = MyName
              i = i + 1
            End If
       End If
       MyName = Dir ' Nhay den thu muc ke tiep'
    Loop
End Sub
 
Chỉnh sửa lần cuối bởi điều hành viên:
Xin lỗi, cho tham gia với. Mình thấy code của các bạn dài và tốc độ hơi mệt. Các bạn xem đây là file mình cải biên từ Help của Excel. Gọn gàng và ấn tượng về tốc độ.
Đúng là gọn gàng và ấn tượng thật, nhưng bạn chẳng chịu theo dõi topic gì cả. Chứ code này thì bạn xem bài của NDU đi, có rồi mà.
 
Upvote 0
Với thầy Long: Thầy dùng Application.FileDialog(4) sẽ hay hơn nhiều so với InputBox (đường dẩn mà nhập bằng tay thì vả lắm)
Với Rollover79: Được voi đòi... bà tiên... giá như mình có thêm mấy tùy chọn:
- Chọn cell đầu tiên xuất dử liệu
- Chọn lấy tên file hay thư mục
===> Có lẽ mấy tùy chọn ấy nên nằm trên 1 Form thì tốt nhất!
Đồng ý rằng cái form này đã được các tác giả nước ngoài làm rất hoành tráng, nhưng ở đây chung ta từng bước xây dựng ứng dụng (từ thấp lên cao) sẽ giúp mọi người tiếp cận kiến thức dể dàng hơn!
(tôi cũng đang tự làm như những gì đã nêu ở trên... có điều cái vụ ByRef của bạn đã gây không ít phiền phức, khiến tôi không tài nào cải biên được)
 
Upvote 0
thầy Long: Thầy dùng Application.FileDialog(4) sẽ hay hơn nhiều so với InputBox (đường dẩn mà nhập bằng tay thì vả lắm)

Mình dự trù 2 trường hợp:
Sub LoadAllFolder: chọn thự mục từ hộp thoại Browse For Folder.
Sub LoadAllFolder1: nhập đường dẫn, thư mục vào InputBox Path. Riêng trường hợp này, nếu đường dẫn không thay đổi, có thể thay:
sPath
= Application.InputBox("Nhap duong dan (ex: D:\SOFT ):", "Path", , , , , , 2) bằng sPath="đường dẫn"
bỏ qua bước nhập đường dẫn
 
Lần chỉnh sửa cuối:
Upvote 0
Mính có thắc mắc này:
Tập tin DeQuyListFolder.xls trong bài 18 chạy tốt. Nhưng khi copy các code của nó sang một tập tin Folder.xls thì nó báo lỗi:
Compile error:
User-defined type not defined

tại dòng Dim objFSO As New FileSystemObject

Mã:
Option Explicit
[B][COLOR=Red]Dim objFSO As New FileSystemObject[/COLOR][/B]

Private Sub LoadFolder(strPath As String, r, c, nId, nCap)
If Not objFSO.FolderExists(strPath) Then Exit Sub
Dim objFolder As Folder
If nCap < 0 Then
    Cells(r, c) = objFSO.GetFolder(strPath).Path
    r = r + 1
ElseIf nId = nCap Then
  If nId = nCap Then
    Cells(r, c) = objFSO.GetFolder(strPath).Path
    r = r + 1
  End If
End If
For Each objFolder In objFSO.GetFolder(strPath).SubFolders
  Call LoadFolder(objFolder.Path, r, c, nId + 1, nCap)
Next
End Sub

Public Sub LoadAllFolder()
Dim sPath As String, nCap As Long, nId As Long, r As Long, c As Long
Dim ShellApp As Object
Set ShellApp = CreateObject("Shell.Application").BrowseForFolder(0, "Please choose a folder", 0)
On Error Resume Next
sPath = ShellApp.Self.Path
On Error GoTo 0
Set ShellApp = Nothing
If Not objFSO.FolderExists(sPath) Then Exit Sub
nCap = Application.InputBox("Chon cap thu muc:", "Path Id", 1, , , , , 1)
r = 1
c = 2
Cells(1, c).EntireColumn.ClearContents
Call LoadFolder(sPath, r, c, nId, nCap)
End Sub

Public Sub LoadAllFolder1()
Dim sPath As String, nCap As Long, nId As Long, r As Long, c As Long
sPath = Application.InputBox("Nhap duong dan (ex: D:\SOFT ):", "Path", , , , , , 2)
'sPath = "D:\A"
If Not objFSO.FolderExists(sPath) Then Exit Sub
nCap = Application.InputBox("Chon cap thu muc:", "Path Id", 1, , , , , 1)
r = 1
c = 2
Cells(1, c).EntireColumn.ClearContents
Call LoadFolder(sPath, r, c, nId, nCap)
End Sub
Tại sao DeQuyListFolder.xls không bị lỗi đó ?
 

File đính kèm

Upvote 0
Mính có thắc mắc này:
Tập tin DeQuyListFolder.xls trong bài 18 chạy tốt. Nhưng khi copy các code của nó sang một tập tin Folder.xls thì nó báo lỗi:
Compile error:
User-defined type not defined

tại dòng Dim objFSO As New FileSystemObject
Tại sao DeQuyListFolder.xls không bị lỗi đó ?
Anh xem hình này thử:

attachment.php
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    40.6 KB · Đọc: 292
Upvote 0
Thank ndu96081631.
Chạy được rồi, thiếu Windows Script Host Object Model
Nhưng nếu gặp các trường hợp khác thì làm sao biết được phải khai báo mục nào?
Làm sao biết được FileSystemObject là của Windows Script Host Object Model?
 
Upvote 0
To: Anh Long,
1. Theo em thì cứ Google hoặc vào http://msdn.microsoft.com/en-us/library/ để tìm kiếm.
2. Hoặc vào VBE, F2. Nhưng chỉ áp dụng trường hợp này nếu đối tượng đã được thêm vào bằng việc Tools>References.

Lê Văn Duyệt
 
Upvote 0
Em nhờ các bác giúp em cách liệt kê file trong thư mục bao gồm cả thư mục con

Xin lỗi, cho tham gia với. Mình thấy code của các bạn dài và tốc độ hơi mệt. Các bạn xem đây là file mình cải biên từ Help của Excel. Gọn gàng và ấn tượng về tốc độ.
Bác cho em hỏi thêm trong file của bác. làm thế nào để liệt kê ra file trong thư mục con của Windows là addins ạ?
 

File đính kèm

Upvote 0
em đã tìm ra rồi! nhờ file của bác be09 ấy ạ!. Thanks.
 
Upvote 0
Web KT

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

Back
Top Bottom