Lúc trước mình đã được các bạn hỗ trợ làm 1 file tool chức năng: ghép thông tin bảng dulieu2.xlsx & dulieu1.xlsx thành file mới: dulieu.xlsx với đủ thông tin 2 file. Do file cần ghép mới có sự thay đổi là thêm 8 dòng tiêu đề định dạng thừa, bảng thông tin bắt đầu từ dòng 9 mà mình không hiểu code lại, nên edit tới lui vẫn không ra được kết quả mong muốn
*Yêu cầu nhờ hỗ trợ là: Tạo ra file dulieu.xlsx, là gộp thông tin của file dulieu1.xlsx và dulieu2.xlsx, trong đó chỉ lấy thông tin dulieu2 từ dòng 10 và chép tiếp nối bảng dulieu1 từ dòng 20. Đây chỉ là ví dụ minh họa, thực tế mỗi file có từ 100 - 200 dòng.
File kết quả: dulieu.xlsx mong muốn là:
*Mình xin đính kèm lại code cũ & đính kèm 3 file excel trong bài, nhờ các bạn trợ giúp, Chân thành cảm ơn!!
*Yêu cầu nhờ hỗ trợ là: Tạo ra file dulieu.xlsx, là gộp thông tin của file dulieu1.xlsx và dulieu2.xlsx, trong đó chỉ lấy thông tin dulieu2 từ dòng 10 và chép tiếp nối bảng dulieu1 từ dòng 20. Đây chỉ là ví dụ minh họa, thực tế mỗi file có từ 100 - 200 dòng.
File kết quả: dulieu.xlsx mong muốn là:
*Mình xin đính kèm lại code cũ & đính kèm 3 file excel trong bài, nhờ các bạn trợ giúp, Chân thành cảm ơn!!
Option Explicit
Private Sub CommandButton1_Click()
Dim wb As Workbook, wbNew As Workbook, ws As Worksheet, wsNew As Worksheet, col As Range, colNew As Range
Dim lastRow As Long, lastCol As Long, lastRowNew As Long
Dim colTitle As String, sFolder As String, newFileName As String, filePath As String
Dim fso As Object, fileNames As Variant, fileName As Variant
getSpeed True
On Error GoTo End_
Set fso = CreateObject("Scripting.FileSystemObject")
sFolder = Me.Range("C4").Value
If Not fso.FolderExists(sFolder) Then
MsgBox "Khong tim thay thu muc: " & vbNewLine & sFolder, vbCritical
GoTo End_
End If
fileNames = Split(Me.Range("C6").Value, ";")
Set wbNew = Workbooks.Add: Set wsNew = wbNew.Worksheets(1)
lastRowNew = 1
For Each fileName In fileNames
filePath = sFolder & "\" & fileName
If Not fso.FileExists(filePath) Then
MsgBox "Khong tim thay tap tin: " & vbNewLine & filePath, vbCritical
GoTo End_
End If
Set wb = Workbooks.Open(filePath): Set ws = wb.Worksheets(1)
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
If lastRowNew = 1 Then
ws.UsedRange.Copy Destination:=wsNew.Cells(lastRowNew, 1)
lastRowNew = lastRow
Else
For Each col In ws.Range(ws.Cells(1, 1), ws.Cells(1, lastCol))
colTitle = col.Cells(1).Value
Set colNew = wsNew.Rows(1).Find(colTitle, LookIn:=xlValues, LookAt:=xlWhole)
If Not colNew Is Nothing Then
ws.Range(col.Cells(2), col.Cells(lastRow)).Copy Destination:=wsNew.Cells(wsNew.Cells(wsNew.Rows.Count, colNew.Column).End(xlUp).Row + 1, colNew.Column)
End If
Next col
lastRowNew = lastRowNew + lastRow - 1
End If
wb.Close SaveChanges:=False
Next fileName
newFileName = "dulieu" & ".xlsx"
wbNew.SaveAs sFolder & "\" & newFileName
wbNew.Close SaveChanges:=False
MsgBox "Done! Da gop dulieu"
End_:
getSpeed False
End Sub