copy sheet từ file excel này sang sheet data của file excel khác

Liên hệ QC

duongtri1987

Thành viên mới
Tham gia
6/8/18
Bài viết
25
Được thích
0
các anh,chị em có 2 file báo cáo,e muốn chép hết dữ liệu tất cả các sheet từ file báo cáo 1 sang vô sheet data báo cáo 2 mà khi vô báo cáo 1 bỏ mấy dòng đầu chỉ lấy từ dòng thứ 6 của các sheet file báo cáo 1 sang file data đến dòng 57 thui em kg muốn lấy người ký tên báo cáo,mà trong file data có ngày luôn nha mấy anh và bỏ dòng stt trong file data,e kg rành về code vba mong các anh chị giúp dùm em,em đang kg biết làm sao hết,
 

File đính kèm

Dữ liệu đầu vào chỉ có đến tháng 3.2018, vậy mà trong phần InputBox, khi anh nhập 8/2018 cũng có kết quả.
Lẽ ra trong trường hợp này phải có MsgBox thông báo " Tháng 8/2018 Không có dữ liệu! " mới chặt chẽ chứ nhỉ?
Điều này em cũng đã nghĩ tới.
Tuy nhiên, dữ liệu đầu vào chưa được chuẩn hóa
bạn đang điền: .03.2018 ở vị trí không thống nhất giữa các sheet
Nên em chưa biết làm sao _)()(-
 
Upvote 0
Điều này em cũng đã nghĩ tới.
Tuy nhiên, dữ liệu đầu vào chưa được chuẩn hóa

Nên em chưa biết làm sao _)()(-
anh cho em hỏi sao em chạy không mất dòng này vậy vẫn hiện ra,dòng em tô màu vàng đấy không liên tục được hả anh,mà cái ngày đấy anh giống như cột mà e,bôi màu cam đầu tiên đấy anh với lại em muốn là chép hết 1 tháng rùi tháng sau nó nhảy qua tháng mới trong cột ngày
 

File đính kèm

Upvote 0
anh cho em hỏi sao em chạy không mất dòng này vậy vẫn hiện ra,dòng em tô màu vàng đấy không liên tục được hả anh,mà cái ngày đấy anh giống như cột mà e,bôi màu cam đầu tiên đấy anh với lại em muốn là chép hết 1 tháng rùi tháng sau nó nhảy qua tháng mới trong cột ngày
Sửa lại code ở bài #38
Mã:
Sub GPE4()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long
    Dim arr, sArr(), dArr(), I As Long, J As Long
   
    Application.ScreenUpdating = False
    arr = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")
    Set Master = ThisWorkbook.Sheets("DATA")
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Add "Microsoft Excel Files", "*.xls*", 1
        If Not .Show = -1 Then
            MsgBox "Ban chua chon File", vbCritical, "----Mr.GPE----"
            Exit Sub
        End If
        For Each Item In .SelectedItems
            Set Wb = Workbooks.Open(Item)
            For Each Ws In Wb.Sheets
                If CheckName(arr, Ws.Name) Then
                    Ws.Range("A6:A" & Rows.Count).SpecialCells(xlCellTypeBlanks, 23).EntireRow.Delete
                    lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                    sArr() = Ws.Range("A6").Resize(lR1 - 5, 15).Value
                    ReDim dArr(1 To UBound(sArr, 1), 1 To 15)
                    For I = 1 To UBound(sArr, 1)
                        dArr(I, 1) = CDate(Ws.Range("E2") & Replace(Ws.Range("F2"), " ", ""))
                        For J = 2 To 15
                            dArr(I, J) = sArr(I, J)
                        Next J
                    Next I
                    With Master
                        lR2 = .Range("H" & Rows.Count).End(xlUp).Row + 1
                        .Range("A" & lR2).Resize(UBound(sArr, 1), 15) = dArr
                    End With
                    Erase sArr: Erase dArr
                End If
            Next Ws
            Wb.Close False
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub

Private Function CheckName(ByVal arr, ByVal sTxt As String) As Boolean
    'arr: mang môt chiêu liêt kê tên các sheets
    Dim bchk
    bchk = Application.Match(sTxt, arr, 0)
    If TypeName(bchk) = "Error" Then CheckName = False Else CheckName = True
End Function
 
Upvote 0
Sửa lại code ở bài #38
Mã:
Sub GPE4()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long
    Dim arr, sArr(), dArr(), I As Long, J As Long
  
    Application.ScreenUpdating = False
    arr = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")
    Set Master = ThisWorkbook.Sheets("DATA")
    With Application.FileDialog(msoFileDialogFilePicker)
        .AllowMultiSelect = True
        .Filters.Add "Microsoft Excel Files", "*.xls*", 1
        If Not .Show = -1 Then
            MsgBox "Ban chua chon File", vbCritical, "----Mr.GPE----"
            Exit Sub
        End If
        For Each Item In .SelectedItems
            Set Wb = Workbooks.Open(Item)
            For Each Ws In Wb.Sheets
                If CheckName(arr, Ws.Name) Then
                    Ws.Range("A6:A" & Rows.Count).SpecialCells(xlCellTypeBlanks, 23).EntireRow.Delete
                    lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                    sArr() = Ws.Range("A6").Resize(lR1 - 5, 15).Value
                    ReDim dArr(1 To UBound(sArr, 1), 1 To 15)
                    For I = 1 To UBound(sArr, 1)
                        dArr(I, 1) = CDate(Ws.Range("E2") & Replace(Ws.Range("F2"), " ", ""))
                        For J = 2 To 15
                            dArr(I, J) = sArr(I, J)
                        Next J
                    Next I
                    With Master
                        lR2 = .Range("H" & Rows.Count).End(xlUp).Row + 1
                        .Range("A" & lR2).Resize(UBound(sArr, 1), 15) = dArr
                    End With
                    Erase sArr: Erase dArr
                End If
            Next Ws
            Wb.Close False
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub

Private Function CheckName(ByVal arr, ByVal sTxt As String) As Boolean
    'arr: mang môt chiêu liêt kê tên các sheets
    Dim bchk
    bchk = Application.Match(sTxt, arr, 0)
    If TypeName(bchk) = "Error" Then CheckName = False Else CheckName = True
End Function
Anh cho e hỏi nếu em muốn hiện ra luôn ngày tháng năm luôn,tại sếp kêu nếu vậy phiền quá vd hôm nay là ngày 24/08/2018 thì hiện giống vậy luôn anh chứ ổng kg chịu là 08/01,mà anh chỉnh ngày lại được không anh em thấy mm/dd/yyyy
 
Upvote 0
Anh cho e hỏi nếu em muốn hiện ra luôn ngày tháng năm luôn,tại sếp kêu nếu vậy phiền quá vd hôm nay là ngày 24/08/2018 thì hiện giống vậy luôn anh chứ ổng kg chịu là 08/01,mà anh chỉnh ngày lại được không anh em thấy mm/dd/yyyy
Bạn cài đặt hiển thị cho cột A trong Sheets("Data") ở dạng dd/MM/yyyy nhé!
 
Upvote 0
Web KT

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

Back
Top Bottom