File excel tổng hợp số liệu từ nhiều file khác trong cùng thư mục (1 người xem)

Liên hệ QC

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

tothanhtam

Thành viên mới
Tham gia
16/7/10
Bài viết
2
Được thích
1
Đề tài này mình cũng đã xem nhưng vẫn chưa tự giải quyết được vấn đề nên một lần nữa nêu lên. Rất mong các bạn ra tay giúp đỡ. Số là mình phải thường xuyên tổng hợp số liệu từ các đơn vị trường học - tất cả các mẫu đều giống nhau, kể cả file tổng hợp. Có 2 trường hợp phải tổng hợp:
- Một là, tập hợp danh sách. Nghĩa là chép các dữ liệu từ các file của các trường vào file Tổng hợp (ví dụ như danh sách học sinh, giáo viên, . . )
- Hai là, tổng hợp số liệu. Nghĩa là tính tổng cộng các số liệu thống kê của từng trường thành file số liệu chung.
Vấn đề ở đây là mỗi file thường có nhiều sheet, dữ liệu nhiều và thường xuyên phải làm với nhiều biểu mẫu khác nhau nên mình làm thủ công hoài thì thật là mệt và không hiệu quả.
Một lần nữa rất mong các bạn giúp đỡ và hướng dẫn cách chung vì mình không có học lập trình VB. Xin gửi file mẫu ví dụ kèm theo./.
 

File đính kèm

Làm cho bạn phần tổng hợp, tranh thủ luyện ADO.
(ADO đúng là quá mạnh trong việc tổng hợp này)
Mã:
Sub TongHop()[COLOR=#a9a9a9]
[/COLOR]    Dim cnn As Object, lsSQL As String, lrs As Object
    Dim Fso As Object, fn, Link As String, Fname As String
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")


    'Mo hop thoai chon thu muc
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            Link = .InitialFileName
        Else
            MsgBox "Ban da khong chon tong hop", vbInformation, "DHN46 - Thong bao"
            Exit Sub
        End If
    End With
    Application.ScreenUpdating = False
    'Duyet qua cac thu muc trong Folder
    With Fso
        For Each fn In .GetFolder(Link).Files
            Fname = .BuildPath(Link, fn.Name)
            If Fname <> ThisWorkbook.FullName Then
                'Tao ket noi CSDL
                With cnn
                    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        "Data Source=" & Fname & _
                                        ";Extended Properties=""Excel 8.0;HDR=No;"";"
                    .Open
                End With
                'Cau lenh truy van
                lsSQL = "SELECT * FROM [SHEET1$B4:F65536] WHERE F2 is not Null"
                lrs.Open lsSQL, cnn, 3, 1


                Sheet1.Range("B65536").End(3).Offset(1, 0).CopyFromRecordset lrs
                cnn.Close
            End If
        Next
    End With
    Application.ScreenUpdating = True
    Set lrs = Nothing
    Set cnn = Nothing
End Sub
 

File đính kèm

Upvote 0
Đề tài này mình cũng đã xem nhưng vẫn chưa tự giải quyết được vấn đề nên một lần nữa nêu lên. Rất mong các bạn ra tay giúp đỡ. Số là mình phải thường xuyên tổng hợp số liệu từ các đơn vị trường học - tất cả các mẫu đều giống nhau, kể cả file tổng hợp. Có 2 trường hợp phải tổng hợp:
- Một là, tập hợp danh sách. Nghĩa là chép các dữ liệu từ các file của các trường vào file Tổng hợp (ví dụ như danh sách học sinh, giáo viên, . . )
- Hai là, tổng hợp số liệu. Nghĩa là tính tổng cộng các số liệu thống kê của từng trường thành file số liệu chung.
Vấn đề ở đây là mỗi file thường có nhiều sheet, dữ liệu nhiều và thường xuyên phải làm với nhiều biểu mẫu khác nhau nên mình làm thủ công hoài thì thật là mệt và không hiệu quả.
Một lần nữa rất mong các bạn giúp đỡ và hướng dẫn cách chung vì mình không có học lập trình VB. Xin gửi file mẫu ví dụ kèm theo./.


Chưa hiểu ý bạn lắm, làm đại hên thì trúng.

Tôi chỉ giúp bạn gộp các File của các trường vào 1 với 4 nút tổng hợp (còn tổng hợp số liệu học sinh thì chưa làm), nếu bạn muốn sửa tiêu đề của sheet Gộp File thì phải sửa tên tiêu đề trong Code (không có dấu).

- Cách sử dụng xem hướng dẫn trong File.

- Để chạy file nhớ thiết lập chế độ chạy macro.
 

File đính kèm

Upvote 0
Chưa hiểu ý bạn lắm, làm đại hên thì trúng.

Tôi chỉ giúp bạn gộp các File của các trường vào 1 với 4 nút tổng hợp (còn tổng hợp số liệu học sinh thì chưa làm), nếu bạn muốn sửa tiêu đề của sheet Gộp File thì phải sửa tên tiêu đề trong Code (không có dấu).

- Cách sử dụng xem hướng dẫn trong File.

- Để chạy file nhớ thiết lập chế độ chạy macro.

Bạn ơi, bác dhn46 làm đúng ý của chủ thớt đấy, nhưng đối với file gồm nhiều sheet thì làm như nào vậy bác (như trong thư mục Tổng hợp số liệu mà chủ thớt đính kèm ý ạ)?
Mình mới tìm hiểu cái này nên chưa bít làm. Bạn dạy mình cách đưa đoạn code trên của bác dhn46 vào file Tổng hợp số liệu nhé.
Tks bác nhiều!!!
 
Upvote 0
Bạn ơi, bác dhn46 làm đúng ý của chủ thớt đấy, nhưng đối với file gồm nhiều sheet thì làm như nào vậy bác (như trong thư mục Tổng hợp số liệu mà chủ thớt đính kèm ý ạ)?
Mình mới tìm hiểu cái này nên chưa bít làm. Bạn dạy mình cách đưa đoạn code trên của bác dhn46 vào file Tổng hợp số liệu nhé.
Tks bác nhiều!!!

Bạn mở File xong nhấn nút Alt + F11 để mở cửa sổ Code thì biết Code đó nằm ở đâu.
 
Upvote 0
Bạn mở File xong nhấn nút Alt + F11 để mở cửa sổ Code thì biết Code đó nằm ở đâu.

Mình đã thử làm với file mà bác dhn46 đính kèm ở trên, nhưng đây là file excel chỉ có 1 sheet. Với file nhiều sheet như Tổng hợp số liệu thì làm như nào bác?
Thực sự mình đang gặp như trường hợp của chủ thread nhưng chưa rành về excel, mà công việc lại đang vội quá. Bạn giúp mình với. Cảm ơn bạn nhiều!
 
Upvote 0
Làm cho bạn phần tổng hợp, tranh thủ luyện ADO.
(ADO đúng là quá mạnh trong việc tổng hợp này)
Mã:
Sub TongHop()[COLOR=#a9a9a9]
[/COLOR]    Dim cnn As Object, lsSQL As String, lrs As Object
    Dim Fso As Object, fn, Link As String, Fname As String
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")


    'Mo hop thoai chon thu muc
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then
            Link = .InitialFileName
        Else
            MsgBox "Ban da khong chon tong hop", vbInformation, "DHN46 - Thong bao"
            Exit Sub
        End If
    End With
    Application.ScreenUpdating = False
    'Duyet qua cac thu muc trong Folder
    With Fso
        For Each fn In .GetFolder(Link).Files
            Fname = .BuildPath(Link, fn.Name)
            If Fname <> ThisWorkbook.FullName Then
                'Tao ket noi CSDL
                With cnn
                    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                        "Data Source=" & Fname & _
                                        ";Extended Properties=""Excel 8.0;HDR=No;"";"
                    .Open
                End With
                'Cau lenh truy van
                lsSQL = "SELECT * FROM [SHEET1$B4:F65536] WHERE F2 is not Null"
                lrs.Open lsSQL, cnn, 3, 1


                Sheet1.Range("B65536").End(3).Offset(1, 0).CopyFromRecordset lrs
                cnn.Close
            End If
        Next
    End With
    Application.ScreenUpdating = True
    Set lrs = Nothing
    Set cnn = Nothing
End Sub

Bác giúp e với phần Tổng hợp số liệu được ko ạ? Khó quá :(
 
Upvote 0
Bác giúp e với phần Tổng hợp số liệu được ko ạ? Khó quá :(
- Thứ nhất: Bạn không nên chen vào topic của người khác khi vấn đề của họ đã được giải quyết, bạn nên lập Topic mới

- Thứ hai : Bạn hỏi vu vơ thế ai biết đường trả lời, dữ liệu đâu? file đâu?....

Thứ ba: Trên diễn đàn còn nhiều người giỏi lắm bạn ah, tôi chỉ là người mới tập tành Code thôi nên bạn hỏi đích danh thì những cao nhân khác sẽ có thể không trả lời bạn đâu.

Chúc bạn sớm hoàn thành công việc!
 
Upvote 0
- Thứ nhất: Bạn không nên chen vào topic của người khác khi vấn đề của họ đã được giải quyết, bạn nên lập Topic mới

- Thứ hai : Bạn hỏi vu vơ thế ai biết đường trả lời, dữ liệu đâu? file đâu?....

Thứ ba: Trên diễn đàn còn nhiều người giỏi lắm bạn ah, tôi chỉ là người mới tập tành Code thôi nên bạn hỏi đích danh thì những cao nhân khác sẽ có thể không trả lời bạn đâu.

Chúc bạn sớm hoàn thành công việc!

:( + Mình có cùng vấn đề như bạn chủ topic nên muốn sử dụng topic này luôn cũng đc mà?!

+ Ý mình là trong file RAR mà chủ topic đính kèm, sau khi download về giải nén có thư mục Tổng hợp số liệu trong đó (Bạn đã giúp chủ topic làm đc thư mục Tổng hợp dữ liệu).

+ Bạn làm đúng cái mà mình cần, nên mình mới hỏi đích danh bạn thôi!

Cảm ơn bạn đã quan tâm!
 
Upvote 0

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

Back
Top Bottom