Tổng hợp file .txt từ nhiều Folders vào file Excel

Liên hệ QC

baquang1984

Thành viên tiêu biểu
Tham gia
3/6/10
Bài viết
429
Được thích
44
Nghề nghiệp
Kỹ sư Lâm nghiệp
Em chào thầy, cô và các anh chị trên diễn đàn GPE
Do công việc của em cần tổng hợp nhiều file .txt có cấu trúc giống nhau từ các thành viên gửi về mỗi thành viên là một Folder. Do vậy nhờ thầy, cô và anh chị trên diễn đàn viết giúp em chương trình VBA để tổng hợp các file .txt này từ các Folder vào file Excel ạ
Yêu cầu của chương trình là khi chọn vào Buttom TỔNG HỢP chương trình sẽ cho phép chọn nhiều Folder chứa các file .txt cần tổng hợp, khi chọn xong chương trình tổng hợp theo yêu cầu sau:
Ở cột A "Tên Folder" chương trình sẽ ghi lần lượt tên Folder chứa file cần tổng hợp vào cột này khi tổng hợp
Ở cột B "Tên File" chương trình sẽ ghi lần lượt tên File chữa dữ liệu cần tổng hợp vào cột này khi tổng hợp
Ở cột C "Số TT", Cột D "X", Cột E "Y" chương trình tổng hợp và ghi dữ liệu có trong các file vào
Như file mẫu em gửi kèm ạ
Em cảm ơn thầy, cô và các anh chị trên diễn đàn nhiều ạ
 

File đính kèm

  • Hoi_GPE.rar
    19 KB · Đọc: 34
Không đệ quy vào trong các folder, vào hết các subfolders để lấy hết các txt files hả bạn ? Chỉ chọn nhiều folder thôi rồi lấy txt files trong các folder đó ?
 
Upvote 0
Không đệ quy vào trong các folder, vào hết các subfolders để lấy hết các txt files hả bạn ? Chỉ chọn nhiều folder thôi rồi lấy txt files trong các folder đó ?
Vâng ạ. Chương trình chỉ cần cho phép chọn các thư mục chứa các file cần tổng hợp và thực hiện tổng hợp thôi ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Mong được sự giúp đỡ của thầy, cô và anh chị trên diễn đàn ạ :victory::victory::victory::victory::victory::victory::victory::victory:
 
Upvote 0
Tự code đi bạn, mày mò tới đâu hay tới đó, kẹt thì up code đã làm lên. Chứ sao nhờ 100% người khác được bạn.
Bạn ở Bắc Giang mà có data của Đakrong hay vậy ?
 
Upvote 0
Tự code đi bạn, mày mò tới đâu hay tới đó, kẹt thì up code đã làm lên. Chứ sao nhờ 100% người khác được bạn.
Bạn ở Bắc Giang mà có data của Đakrong hay vậy ?
Em thì không biết nhiều về Code VBA do vậy em không thể tự code được chương trình tổng hợp từ nhiều Folder. Chủ yếu là nhờ thầy, cô và anh chị trên diễn đàn viết giúp sau đó vận dụng vào thực tiễn công việc của mình
Em cảm ơn anh ạ
 
Upvote 0
Cân nhắc, suy nghỉ các yêu cầu hết rồi post lên 1 lần luôn đi bạn. Chứ tui ngán các kiểu hỏi liên tu hồi tận, không kết thúc lắm. Làm A xong hỏi B, làm B xong hỏi C...
 
Upvote 0
Cân nhắc, suy nghỉ các yêu cầu hết rồi post lên 1 lần luôn đi bạn. Chứ tui ngán các kiểu hỏi liên tu hồi tận, không kết thúc lắm. Làm A xong hỏi B, làm B xong hỏi C...
Yêu cầu của chương trình em đã giải thích đầy đủ ở #1 mà anh mong anh viết giúp chương trình ạ
 
Upvote 0
Em chào thầy, cô và các anh chị trên diễn đàn GPE
Do công việc của em cần tổng hợp nhiều file .txt có cấu trúc giống nhau từ các thành viên gửi về mỗi thành viên là một Folder. Do vậy nhờ thầy, cô và anh chị trên diễn đàn viết giúp em chương trình VBA để tổng hợp các file .txt này từ các Folder vào file Excel ạ
Yêu cầu của chương trình là khi chọn vào Buttom TỔNG HỢP chương trình sẽ cho phép chọn nhiều Folder chứa các file .txt cần tổng hợp, khi chọn xong chương trình tổng hợp theo yêu cầu sau:
Ở cột A "Tên Folder" chương trình sẽ ghi lần lượt tên Folder chứa file cần tổng hợp vào cột này khi tổng hợp
Ở cột B "Tên File" chương trình sẽ ghi lần lượt tên File chữa dữ liệu cần tổng hợp vào cột này khi tổng hợp
Ở cột C "Số TT", Cột D "X", Cột E "Y" chương trình tổng hợp và ghi dữ liệu có trong các file vào
Như file mẫu em gửi kèm ạ
Em cảm ơn thầy, cô và các anh chị trên diễn đàn nhiều ạ
vấn đề chọn nhiều folders khó à nha, thầy chỉ cho chọn nhiều files thôi
 
Upvote 0
Yêu cầu của chương trình em đã giải thích đầy đủ ở #1 mà anh mong anh viết giúp chương trình ạ
Nếu chịu khó mày mò thì bài viết này có thể đáp ứng được yêu cầu của bạn. Bạn tham gia GPE cũng đã khoảng 10 năm sao không tự nghiên cứu để tự xử lý những yêu cầu công việc của mình cho khỏe.
 
Upvote 0
Nếu chịu khó mày mò thì bài viết này có thể đáp ứng được yêu cầu của bạn. Bạn tham gia GPE cũng đã khoảng 10 năm sao không tự nghiên cứu để tự xử lý những yêu cầu công việc của mình cho khỏe.
Lâu lắm mới thấy anh quanghai1969 xuất hiện trên diễn đàn em tham gia diễn đàn cũng lâu và cũng được rất nhiều thầy, cô và các anh chị giúp đỡ em cũng mày mò nghiên cứu về VBA nhưng vẫn chỉ dừng lại là ứng dụng và tùy biến từ những chương trình được các thành viên giúp đỡ anh ạ. Về bản chất của VBA như thế nào thì em lại không hiểu rõ do vậy có những chương trình em không biết phải bắt đầu từ đâu. Nên up lên hỏi trên diễn đàn và nhờ giúp đỡ để phục vụ cho công việc của mình
Em cảm ơn anh quanghai1969 đã giúp đỡ em rất nhiều từ các chương trình trước. Mong anh và các thành viên diễn đàn giúp em chương trình này ạ
 
Upvote 0
Lâu lắm mới thấy anh quanghai1969 xuất hiện trên diễn đàn em tham gia diễn đàn cũng lâu và cũng được rất nhiều thầy, cô và các anh chị giúp đỡ em cũng mày mò nghiên cứu về VBA nhưng vẫn chỉ dừng lại là ứng dụng và tùy biến từ những chương trình được các thành viên giúp đỡ anh ạ. Về bản chất của VBA như thế nào thì em lại không hiểu rõ do vậy có những chương trình em không biết phải bắt đầu từ đâu. Nên up lên hỏi trên diễn đàn và nhờ giúp đỡ để phục vụ cho công việc của mình
Em cảm ơn anh quanghai1969 đã giúp đỡ em rất nhiều từ các chương trình trước. Mong anh và các thành viên diễn đàn giúp em chương trình này ạ
Mình chỉ muốn giúp bạn hướng đi để tự giải quyết bài này. Code bên dưới sẽ cho bạn tên file đầy đủ của file để có thể dùng lệnh OpenTextFile của FSO để xử lý dữ liệu của file text. Phần tên file và tên folder cũng có kèm theo.
Chúc thành công
Mã:
Sub Main()
Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then           
            GetAllFiles .SelectedItems(1), fso
        End If
    End With
End Sub
Function GetAllFiles(ByVal StrFolder As String, fso As Object)
Dim objFolder As Object, objSubFolder As Object, File As Object
    Set objFolder = fso.GetFolder(StrFolder)
    For Each File In objFolder.Files
        MsgBox File.path 'ten day du cua file
        MsgBox File.Name 'ten file
        MsgBox objFolder.Name 'ten thu muc
    Next
    For Each objSubFolder In objFolder.SubFolders
        GetAllFiles objSubFolder.path, fso
    Next objSubFolder
End Function
 
Upvote 0
Mình chỉ muốn giúp bạn hướng đi để tự giải quyết bài này. Code bên dưới sẽ cho bạn tên file đầy đủ của file để có thể dùng lệnh OpenTextFile của FSO để xử lý dữ liệu của file text. Phần tên file và tên folder cũng có kèm theo.
Chúc thành công
Mã:
Sub Main()
Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then          
            GetAllFiles .SelectedItems(1), fso
        End If
    End With
End Sub
Function GetAllFiles(ByVal StrFolder As String, fso As Object)
Dim objFolder As Object, objSubFolder As Object, File As Object
    Set objFolder = fso.GetFolder(StrFolder)
    For Each File In objFolder.Files
        MsgBox File.path 'ten day du cua file
        MsgBox File.Name 'ten file
        MsgBox objFolder.Name 'ten thu muc
    Next
    For Each objSubFolder In objFolder.SubFolders
        GetAllFiles objSubFolder.path, fso
    Next objSubFolder
End Function
EM THẤY người ta keo ko đệ quy đó Anh
 
Upvote 0
EM THẤY người ta keo ko đệ quy đó Anh
Không đệ quy thì đơn giản hơn nhiều. Trong đường link có một Sub ImportTextToExcel để giải quyết vấn đề. Quan trọng là chủ thớt phải chịu khó vận động. Mình đã giúp tương đối rồi.
 
Upvote 0
Không đệ quy thì đơn giản hơn nhiều. Trong đường link có một Sub ImportTextToExcel để giải quyết vấn đề. Quan trọng là chủ thớt phải chịu khó vận động. Mình đã giúp tương đối rồi.
Em nghỉ chủ thớt nên làm 1 cột là thư mục , 1 cột là tên file ... xong muốn lấy cái gì căn cứ vào đó mà lấy là ok nhất
Hay thay đổi Folder , file nào thì vào đó mà sửa !
 
Upvote 0
Bạn có thể tổng hợp file qua công cụ Power query của Excel có file tham khảo cách bên dưới, thay đổi lại đường dẫn cho phù hợp trong máy của bạn ở sheet KQ ô H2. Nhược điểm công cụ này thì chỉ hỗ trợ từ Excel 2010 trở đi, do bạn gửi là Excel 2003 nên mình chỉ gửi file tham khảo
Khi bạn sử dụng thành thạo công Power Query, Power Pivot khi đó rất nhiều vấn đề không cần tới VBA hỗ trợ
 

File đính kèm

  • Hoi_GPE.zip
    65.6 KB · Đọc: 19
Upvote 0
Em thấy code không có phần chọn nhiều folders, vậy cho em hỏi có cách nào chọn 1 luc nhieu folder?
 
Upvote 0
Em thấy code không có phần chọn nhiều folders, vậy cho em hỏi có cách nào chọn 1 luc nhieu folder?
Code mình viết không thể chọn cùng lúc nhiều folders, code chỉ có thể lấy tên của tất cả các file trong thư mục gốc và file trong thư mục con nếu có
 
Upvote 0
Bạn có thể tổng hợp file qua công cụ Power query của Excel có file tham khảo cách bên dưới, thay đổi lại đường dẫn cho phù hợp trong máy của bạn ở sheet KQ ô H2. Nhược điểm công cụ này thì chỉ hỗ trợ từ Excel 2010 trở đi, do bạn gửi là Excel 2003 nên mình chỉ gửi file tham khảo
Khi bạn sử dụng thành thạo công Power Query, Power Pivot khi đó rất nhiều vấn đề không cần tới VBA hỗ trợ
Em tải file anh về chạy nhưng không thấy chạy được em đang sử dụng office 365 bản 64bit ạ
Bài đã được tự động gộp:

Mình chỉ muốn giúp bạn hướng đi để tự giải quyết bài này. Code bên dưới sẽ cho bạn tên file đầy đủ của file để có thể dùng lệnh OpenTextFile của FSO để xử lý dữ liệu của file text. Phần tên file và tên folder cũng có kèm theo.
Chúc thành công
Mã:
Sub Main()
Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show Then          
            GetAllFiles .SelectedItems(1), fso
        End If
    End With
End Sub
Function GetAllFiles(ByVal StrFolder As String, fso As Object)
Dim objFolder As Object, objSubFolder As Object, File As Object
    Set objFolder = fso.GetFolder(StrFolder)
    For Each File In objFolder.Files
        MsgBox File.path 'ten day du cua file
        MsgBox File.Name 'ten file
        MsgBox objFolder.Name 'ten thu muc
    Next
    For Each objSubFolder In objFolder.SubFolders
        GetAllFiles objSubFolder.path, fso
    Next objSubFolder
End Function
Anh quanghai1969 ơi giúp em chương trình này với anh ơi. Hiện tại với kiến thức VBA của em thì không đủ khả năng để làm được ạ
Em cảm ơn anh nhiều
Bài đã được tự động gộp:

Em nghỉ chủ thớt nên làm 1 cột là thư mục , 1 cột là tên file ... xong muốn lấy cái gì căn cứ vào đó mà lấy là ok nhất
Hay thay đổi Folder , file nào thì vào đó mà sửa !
Em làm từng cột tách biệt mà cột A sẽ ghi tên của Thư mục chứa các file, cột B lưu tên các file chứa dữ liệu, Cột C, D, E lưu dữ liệu cần tổng hợp có trong các file mà
 
Upvote 0
Em tải file anh về chạy nhưng không thấy chạy được em đang sử dụng office 365 bản 64bit ạ
Vậy quá tốt rồi, bạn phải gõ lại đường dẫn trong ô H2 nha

221363

Bạn thêm thử folder vào trong thư mục TXT_daKrong rồi nhấn nút Refersh hoặc Ctrl+ Alt +F5 xem sao
 
Upvote 0
Web KT
Back
Top Bottom