Trong file em thấy GopFile(), em dùng thử thì chạy được 1 lút thì báo lỗi như bác Hai Lúa Miền Tây
Cảm ơn mấy bác đã nhiệt tình giúp đỡ!
Giờ thì cũng đã đáp ứng được yêu cầu của em rồi:
copy nhiều file excel thành 1 file và đếm
Nhưng em thấy giải thuật thì chưa ổn lắm, tốc độ thực thi còn chậm.
-Em thì không biết được code copy có chính xác tuyệt đối hay không vì dữ liệu lớn quá

295 file, khoảng 40.000 dòng
-Code đếm của bác
nginh như thế cũng ổn rồi

Nếu được thì các bác giúp em thêm 1 bước nữa nhé, là khi đếm xong ẩn đi những dòng giá trị
bằng 0 luôn đi ạ
Thật tình mà nói tôi theo dõi đề tài này cũng đã lâu nhưng chỉ hiểu đến đoạn bạn muốn gộp file vào 1 sheet, vậy xin hỏi bạn cái kết quả gộp đó dùng với mục đích gì? Nếu bạn giải thích kỹ hơn chắc có lẽ sẽ có giải pháp khác tối ưu hơn.
Bạn test thử code sau coi còn lỗi không nhé.
[GPECODE=sql]Sub GopFile()
Dim cn As Object, adoRS As Object
Dim i As Integer, strSQL As String
Dim strFileName As Variant, shtName As String
strFileName = Application.GetOpenFilename("Excel Files (*.xl*), *.xl*", _
Title:="Select files", MultiSelect:=True)
If IsArray(strFileName) Then
Set cn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
For i = LBound(strFileName) To UBound(strFileName)
shtName = Replace(Mid(strFileName(i), InStrRev(strFileName(i), "\") + 1), ".xls", "$")
strSQL = strSQL & " SELECT * FROM [" & strFileName(i) & "].[" & shtName & "] union all "
Next i
With cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
.Open
End With
With adoRS
.ActiveConnection = cn
.Open Left(strSQL, Len(strSQL) - 10)
Sheet2.Range("A2").CopyFromRecordset adoRS
.Close
End With
End If
cn.Close
Set cn = Nothing: Set adoRS = Nothing
Set strFileName = Nothing
End Sub
[/GPECODE]