Tổng hợp dữ liệu từ nhiều file TXT

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à anh chị trên diễn đàn GPE. Em nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu từ nhiều file .txt ạ
Em có nhiều file txt của nhiều tờ bản đồ có cùng cấu trúc dữ liệu nếu tổng hợp bằng tay thì lâu quá nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu vào file Excel nhơ file đính kèm ạ. các cột dữ liệu từ 1-54 thì được lấy lần lượt như file .txt tuy nhiêu cột A trong file excel thì lấy số ở tên file txt vì file txt có định dạng là DC1, DC2, DC3 .... DCn.
Mong được Thầy, cô và anh chị trên diễn đàn giúp đỡ ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào Thầy, cô và anh chị trên diễn đàn GPE. Em nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu từ nhiều file .txt ạ
Em có nhiều file txt của nhiều tờ bản đồ có cùng cấu trúc dữ liệu nếu tổng hợp bằng tay thì lâu quá nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu vào file Excel nhơ file đính kèm ạ. các cột dữ liệu từ 1-54 thì được lấy lần lượt như file .txt tuy nhiêu cột A trong file excel thì lấy số ở tên file txt vì file txt có định dạng là DC1, DC2, DC3 .... DCn.
Mong được Thầy, cô và anh chị trên diễn đàn giúp đỡ ạ
Dựa vào bài viết ở link này của bác @hpkhuong: https://www.giaiphapexcel.com/diend...hèn-thêm-1-cột-là-tên-file.130396/post-819435
Tôi sử lại 1 chút, bạn thử xem
PHP:
Public Sub ImportTxt_ToExcel()
    Dim Fso As Object, TextSource As Object, TotalLines, Item, Tmp
    Dim K As Long, I As Long, J As Long, sArr(1 To 500000, 1 To 55)
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Application.ScreenUpdating = False
    
    MsgBox "Chon File TXT Import" & Chr(10) & "(Co the chon Nhieu File de Import)"
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Add "TXT File", "*.txt", 1
        If Not .Show = -1 Then
            MsgBox "Ban chua chon File", vbInformation, "----Mr.GPE----"
            Exit Sub
        End If
    On Error Resume Next
    For Each Item In .SelectedItems
        Set TextSource = Fso.OpenTextFile(Item, 1, , -2)
            TotalLines = Split(TextSource.ReadAll, vbCrLf)
            
            For I = 4 To UBound(TotalLines)
                If Len(TotalLines(I)) Then
                Tmp = Split(TotalLines(I), "|")
                    K = K + 1
                    sArr(K, 1) = Fso.GetBaseName(Item)
                    For J = 2 To 55
                        sArr(K, J) = Tmp(J - 1)
                    Next J
                End If
            Next
    Next
    End With
    If K Then
        Range("A2").CurrentRegion.Offset(2).ClearContents
        Range("A4").Resize(K, 55).Value = sArr
    End If
    MsgBox "Done!"
    Application.ScreenUpdating = True
End Sub
 
Upvote 0
Em chào Thầy, cô và anh chị trên diễn đàn GPE. Em nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu từ nhiều file .txt ạ
Em có nhiều file txt của nhiều tờ bản đồ có cùng cấu trúc dữ liệu nếu tổng hợp bằng tay thì lâu quá nhờ Thầy, cô và anh chị giúp em đoạn Code VBA để tổng hợp dữ liệu vào file Excel nhơ file đính kèm ạ. các cột dữ liệu từ 1-54 thì được lấy lần lượt như file .txt tuy nhiêu cột A trong file excel thì lấy số ở tên file txt vì file txt có định dạng là DC1, DC2, DC3 .... DCn.
Mong được Thầy, cô và anh chị trên diễn đàn giúp đỡ ạ
Mong được thầy cô và anh chị trên diễn đàn giúp đỡ về chường trình này ạ. Em
Dựa vào bài viết ở link này của bác @hpkhuong: https://www.giaiphapexcel.com/diendan/threads/gộp-nhiều-file-thành-file-tổng-và-chèn-thêm-1-cột-là-tên-file.130396/post-819435
Tôi sử lại 1 chút, bạn thử xem
PHP:
Public Sub ImportTxt_ToExcel()
    Dim Fso As Object, TextSource As Object, TotalLines, Item, Tmp
    Dim K As Long, I As Long, J As Long, sArr(1 To 500000, 1 To 55)
   
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Application.ScreenUpdating = False
   
    MsgBox "Chon File TXT Import" & Chr(10) & "(Co the chon Nhieu File de Import)"
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Add "TXT File", "*.txt", 1
        If Not .Show = -1 Then
            MsgBox "Ban chua chon File", vbInformation, "----Mr.GPE----"
            Exit Sub
        End If
    On Error Resume Next
    For Each Item In .SelectedItems
        Set TextSource = Fso.OpenTextFile(Item, 1, , -2)
            TotalLines = Split(TextSource.ReadAll, vbCrLf)
           
            For I = 4 To UBound(TotalLines)
                If Len(TotalLines(I)) Then
                Tmp = Split(TotalLines(I), "|")
                    K = K + 1
                    sArr(K, 1) = Fso.GetBaseName(Item)
                    For J = 2 To 55
                        sArr(K, J) = Tmp(J - 1)
                    Next J
                End If
            Next
    Next
    End With
    If K Then
        Range("A2").CurrentRegion.Offset(2).ClearContents
        Range("A4").Resize(K, 55).Value = sArr
    End If
    MsgBox "Done!"
    Application.ScreenUpdating = True
End Sub
Em cảm ơn vanthinh3101 nhiều ạ để có thể áp dụng Code của anh vào các chương trình sau anh có thể bớt chút thời gian giải thích giúp em chương trình anh viết được không ạ. Em cảm ơn anh nhiều nhiều ạ
 
Upvote 0
Mong được thầy cô và anh chị trên diễn đàn giúp đỡ về chường trình này ạ. Em

Em cảm ơn vanthinh3101 nhiều ạ để có thể áp dụng Code của anh vào các chương trình sau anh có thể bớt chút thời gian giải thích giúp em chương trình anh viết được không ạ. Em cảm ơn anh nhiều nhiều ạ
Để giải thích chi tiết được thì tôi chưa đủ trình độ để giảng giải cho bạn.
Bài này có 2 vấn đề chính là cách sử dụng FileSystemObject và Split
Bạn tìm hiểu thêm về FileSystemObject tại link: https://www.giaiphapexcel.com/diendan/threads/bài-12-filesystemobject.129399/
Ở mục 2.24 có nói đến phương thức OpenTextFile
Ở mục 4, ví dụ đầu tiên có ví dụ về lấy nội dung trong file txt
Bạn xem trước, nếu mắc ở đâu thì tôi nói ở đó vậy.
 
Upvote 0
Để giải thích chi tiết được thì tôi chưa đủ trình độ để giảng giải cho bạn.
Bài này có 2 vấn đề chính là cách sử dụng FileSystemObject và Split
Bạn tìm hiểu thêm về FileSystemObject tại link: https://www.giaiphapexcel.com/diendan/threads/bài-12-filesystemobject.129399/
Ở mục 2.24 có nói đến phương thức OpenTextFile
Ở mục 4, ví dụ đầu tiên có ví dụ về lấy nội dung trong file txt
Bạn xem trước, nếu mắc ở đâu thì tôi nói ở đó vậy.
Em cảm ơn anh nhiều ạ rất cảm ơn sự hướng dẫn của anh
 
Upvote 0
Web KT

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

Back
Top Bottom