Các Bác cho em hỏi, chỉ dùng hàm dir trong vba thì có lấy được tên file trong thư mục con không ah?

Liên hệ QC

Lequocvan

Thành viên thường trực
Tham gia
21/8/07
Bài viết
364
Được thích
128
Donate (Paypal)
Donate
Donate (Momo)
Donate
Giới tính
Nam
Nghề nghiệp
Agribank
Các Bác cho em hỏi, chỉ dùng hàm dir trong vba thì có lấy được tên file trong thư mục con không ah?
Em dùng Excel Macos ah.
 
Các Bác cho em hỏi, chỉ dùng hàm dir trong vba thì có lấy được tên file trong thư mục con không ah?
Em dùng Excel Macos ah.
Tôi xem trong VBLib ... xong copy ra cho Bạn xem ... xong tự xử nhé
Tuy nhiên tôi khuyên ko nên dùng nó vì sẻ lỗi Với Tiếng Việt có dấu ... còn chi tiết sao thì hãy vọc thật nhiều vào sẻ biết thôi

Mã:
Tên hàm:
Dir

Mô tả:
Dir [(pathname [, attributes])]

Tham số:
pathname
Đường dẫn muốn kiểm tra
attributes
Thuộc tích của file hay folder muốn kiểm tra

Ghi chú:
Dùng cho tham số attributes
vbNormal = 0
Không quan tâm đến thuộc tính của các hồ sơ
vbReadOnly = 1
Chỉ quan tâm đến các hồ sơ có thuộc tính chỉ đọc
vbHidden = 2
Chỉ quan tâm đến các hồ sơ có thuộc tính ẩn
vbVolume = 8
Chỉ quan tâm đến các hồ sơ không có thuộc tính
vbDirectory 16
Chỉ quan tâm đến các thư mục

Ví dụ:
Option Explicit
Private Sub Form_Load()
Dim MyFile, MyPath, MyName
    ' Myfile = WIN.INI neu file do co ton tai
    MyFile = Dir("C:\WINDOWS\WIN.INI")
    ' Myfile = file dau tien trong thu muc C:Windows\ co duoi la INI
    MyFile = Dir("C:\WINDOWS\*.INI")
    ' Goi lai viec kiem tra
    MyFile = Dir
    ' Myfile = file dau tien trong thu muc C:Windows\ co duoi la TXT va co thuoc tinh an
    MyFile = Dir("*.TXT", vbHidden)
    MyPath = "c:\"' Gan MyPath = "C:\"
    MyName = Dir(MyPath, vbDirectory)' Gan MyName= ten thu muc dau tien trong MyPath
    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
                Debug.Print MyName
            End If
       End If
       MyName = Dir' Nhay den thu muc ke tiep
    Loop
End Sub

Tham khảo thêm:
ChDir
ChDrive
CurDir


Sau này code két khá hơn chút thì mô phỏng kiểu hàm đó xong tự tay viết lấy 1 Hàm tạm keo là DirW mà dùng cho khỏe

Hoặc kẹt quá muốn đánh nhanh thắng nhanh thì Tìm Google họ làm cho rùi còn ta chỉ Việc ....
 
Lần chỉnh sửa cuối:
Em đang dùng Excel trên Mac OS X, nên VBA có vẻ ít tính năng như trên Windows, FSO trên Windows thì ngon luôn, nhưng trên Mac OS X thì hổng có ổn.
Em đã dùng code sau, nhưng lại không thể tìm trên các thư mục con được ah.
DanhSachTenFileTrongThuMuc = Dir(folderPath, vbNormal)
Em chưa biết cách làm sao để tìm cả trong các thư mục con của folderPath nữa ah? Mong mọi người giúp ah!
 
Đúng, trên MacOS nó không hỗ trợ nhiều. Một số thư viện không support: như FSO, Save File. Hiện tại mình không dùng MacOS nên không chắc phần Dir.
Nói chung, code VBA đã viết trên Windows chạy phà phà, qua MacOS đa phần dùng lib đều không chạy được. Một số cái hình như mình chèn app script. Làm lâu rồi không nhớ rõ nữa.
Bạn có thể share file, nói rõ chỗ nào đang lỗi. Phần FSO mình đã có fix một lần.
Do làm lâu rồi, nên mình hay dùng từ "hình như" :)
 
Tôi ko có dùng MAC nên chịu ... nếu có tôi mò xuất cho 1 thư viện API viết trên Delphi ... còn ta chỉ khai báo và Call
kể cả truy xuất dữ liệu cũng thế Tôi dùng FireDAC của Delphi nên ko có gì lệ thuộc ADODB của Ms

mà xu hướng chung bi giờ là họ ít muốn lệ thuộc Ms trong 1 số cái ..............................
 
FileSystemObject là công cụ của cỗ máy Scripting. Mỗi hệ thống vận hành có cỗ máy Scripting riêng của mình, không thể trao đổi gì nhau cả.
Mặt khác, FileSystemObject được MS thiết kế để hoạt động trên hệ thống file FAT32 và NTFS. Trong khi đó, các lệnh về files và directory của Mac là chủ yếu cho APFS, có thể làm việc với FAT32 và ExFAT nhưng không êm nổi với NTFS.
Để gọi MacScript, VBA có hàm MacScript và AppleScript.
 
Web KT
Back
Top Bottom