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

anh cho em hỏi sao chạy qua file báo cáo thành phẩm 35 trong sheet data khi cuối dòng 1 tháng qua tháng sau nó có khoảng trống vậy,nó kg liền vào nhau được hả anh
Tôi đã gửi lại bạn code chuẩn ở bài #18 bạn nhé!
Bạn chưa lấy code chuẩn mà.
 
Upvote 0
Tôi đã gửi lại bạn code chuẩn ở bài #18 bạn nhé!
Bạn chưa lấy code chuẩn mà.
em lấy code cuối cùng đấy anh,với lại e muốn hỏi rằng nếu lấy code này làm 2 file cuối được kg anh,cách làm cũng tương tự thui anh mà sao e làm thêm file công cụ nó kg chạy,copy sheet trong file công cụ sang sheet báo cáo công cụ 23(1),mà file báo cáo công cụ e chưa đưa mã hàng vô anh
 

File đính kèm

Upvote 0
em lấy code cuối cùng đấy anh,với lại e muốn hỏi rằng nếu lấy code này làm 2 file cuối được kg anh,cách làm cũng tương tự thui anh mà sao e làm thêm file công cụ nó kg chạy,copy sheet trong file công cụ sang sheet báo cáo công cụ 23(1),mà file báo cáo công cụ e chưa đưa mã hàng vô anh
Tôi chạy theo code ở bài #18 thì chính xác, không bị lỗi như bạn đã nói.
Đối với yêu cầu bạn mới đưa lên, code không chạy đúng vì:
- Template của dữ liệu đầu vào khác với Template yêu cầu cũ.
- Trong file dữ liệu đầu vào, có sheet TKT khác mẫu so với các Sheet còn lại.
- Bạn đặt tên sheet tổng hợp ở file đầu ra là "data" # "DATA" của yêu cầu cũ.
 
Upvote 0
Tôi chạy theo code ở bài #18 thì chính xác, không bị lỗi như bạn đã nói.
Đối với yêu cầu bạn mới đưa lên, code không chạy đúng vì:
- Template của dữ liệu đầu vào khác với Template yêu cầu cũ.
- Trong file dữ liệu đầu vào, có sheet TKT khác mẫu so với các Sheet còn lại.
- Bạn đặt tên sheet tổng hợp ở file đầu ra là "data" # "DATA" của yêu cầu cũ.
không phải bạn vì mình làm cùng 2 file giống nhau nhung có lúc chạy lúc kg chạy mình cũng kg hiểu lắm,
với lại nếu đưa code này qua 2 file báo cáo công cụ cần sửa code thế nào bạn cùng cách làm thui,với lại chỉ giúp e 2 file này luon anh bao cao kho tp,copy hết vô báo cáo kho tp 03.183 mong anh chỉ giúp e
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tôi chạy theo code ở bài #18 thì chính xác, không bị lỗi như bạn đã nói.
Đối với yêu cầu bạn mới đưa lên, code không chạy đúng vì:
- Template của dữ liệu đầu vào khác với Template yêu cầu cũ.
- Trong file dữ liệu đầu vào, có sheet TKT khác mẫu so với các Sheet còn lại.
- Bạn đặt tên sheet tổng hợp ở file đầu ra là "data" # "DATA" của yêu cầu cũ.
anh ơi làm ơn chỉ giúp e 2 file báo cáo kho thành phẩm được kg anh chỉnh code thế nào anh vì sếp e hối quá h e kg biet làm sao nữa
 
Upvote 0

File đính kèm

Upvote 0
đầu vào là báo cáo công cụ đầu ra là báo cáo công cụ 23(1),đầu vào là báo cáo kho tp 1 đầu ra là báo cáo kho tp t.03.183
Bạn phải nêu cụ thể chứ?
1. Báo cáo công cụ dụng cụ:
- Yêu là là tổng hợp dữ liệu từ file báo cáo công cụ.xls vào Sheet data ở file báo cáo công cụ 23(1).xlsm không?
- File báo cáo công cụ.xls có 6 sheet, tổng hợp tất cả các sheet hay loại bỏ sheet nào?
- Sheet data ở file báo cáo công cụ 23(1).xlsm có cột Ngày và cột Mã hàng. 2 cột này không biết lấy thông tin thế nào?
2. Báo cáo thành phẩm: các nội dung tương tự
Nếu bạn không nêu rõ được chi tiết yêu cầu thì không ai có thể giúp được.
 
Upvote 0
Bạn phải nêu cụ thể chứ?
1. Báo cáo công cụ dụng cụ:
- Yêu là là tổng hợp dữ liệu từ file báo cáo công cụ.xls vào Sheet data ở file báo cáo công cụ 23(1).xlsm không?
- File báo cáo công cụ.xls có 6 sheet, tổng hợp tất cả các sheet hay loại bỏ sheet nào?
- Sheet data ở file báo cáo công cụ 23(1).xlsm có cột Ngày và cột Mã hàng. 2 cột này không biết lấy thông tin thế nào?
2. Báo cáo thành phẩm: các nội dung tương tự
Nếu bạn không nêu rõ được chi tiết yêu cầu thì không ai có thể giúp được.
-tổng hộp các sheet giống file báo cáo thành phẩm vô file data báo cáo công cụ 23.1 đấy anh
-ở sheet data em quen dua cột mã hàng vô anh trong sheet bao cao cong cu anh,vì e phải dua vo them cot mã hàng 23()nua a,cột ngày trong sheet data anh là ngày mà họ nhập vô sheet đấy anh,file này mới đúng e mới đưa dại mã hàng vô anh,dữ liệu file bao cao cong cu sẽ copy vô sheet data báo cáo công cụ 23,cột ngày tự điền giống file báo cáo thành phẩm anh
 

File đính kèm

Upvote 0
-tổng hộp các sheet giống file báo cáo thành phẩm vô file data báo cáo công cụ 23.1 đấy anh
-ở sheet data em quen dua cột mã hàng vô anh trong sheet bao cao cong cu anh,vì e phải dua vo them cot mã hàng 23()nua a,cột ngày trong sheet data anh là ngày mà họ nhập vô sheet đấy anh,file này mới đúng e mới đưa dại mã hàng vô anh,dữ liệu file bao cao cong cu sẽ copy vô sheet data báo cáo công cụ 23,cột ngày tự điền giống file báo cáo thành phẩm anh
Ôi trời, tôi hỏi gì thì bạn trả lời đó cho rõ ràng.
Bạn viết liền tù tì thế kia, tôi đọc mà loạn cả đầu.
Ví dụ bạn trả lời thề này có dễ đọc không?
1. Báo cáo công cụ dụng cụ:
- Yêu là là tổng hợp dữ liệu từ file báo cáo công cụ.xls vào Sheet data ở file báo cáo công cụ 23(1).xlsm không? --> đúng/sai?
- File báo cáo công cụ.xls có 6 sheet, tổng hợp tất cả các sheet hay loại bỏ sheet nào? --> loại bỏ sheet TKT? (bạn chưa trả lời câu này)
- Sheet data ở file báo cáo công cụ 23(1).xlsm có cột Ngày và cột Mã hàng. 2 cột này không biết lấy thông tin thế nào? --> đã bổ sung cột Mã hàng, ngày thì lấy tên sheet.
 
Upvote 0
Ôi trời, tôi hỏi gì thì bạn trả lời đó cho rõ ràng.
Bạn viết liền tù tì thế kia, tôi đọc mà loạn cả đầu.
Ví dụ bạn trả lời thề này có dễ đọc không?
1. Báo cáo công cụ dụng cụ:
- Yêu là là tổng hợp dữ liệu từ file báo cáo công cụ.xls vào Sheet data ở file báo cáo công cụ 23(1).xlsm không? --> đúng/sai?
- File báo cáo công cụ.xls có 6 sheet, tổng hợp tất cả các sheet hay loại bỏ sheet nào? --> loại bỏ sheet TKT? (bạn chưa trả lời câu này)
- Sheet data ở file báo cáo công cụ 23(1).xlsm có cột Ngày và cột Mã hàng. 2 cột này không biết lấy thông tin thế nào? --> đã bổ sung cột Mã hàng, ngày thì lấy tên sheet.
sr e dang rối
-đúng rùi a
-loại bỏ sheet tkt ra anh
-ngày sẽ lấy tên sheet anh
 
Upvote 0
sr e dang rối
-đúng rùi a
-loại bỏ sheet tkt ra anh
-ngày sẽ lấy tên sheet anh
File công cụ đã viết code xong.
Bạn xem đúng ý chưa?
Báo cáo kho thành phẩm tôi chưa xem được. Trước hết bạn cần nêu chi tiết yêu cầu cụ thể ra nhé!
 

File đính kèm

Upvote 0
File công cụ đã viết code xong.
Bạn xem đúng ý chưa?
Báo cáo kho thành phẩm tôi chưa xem được. Trước hết bạn cần nêu chi tiết yêu cầu cụ thể ra nhé!
f
file thành phẩm làm giống mấy file kia nhưng trong file báo cáo kho tp01 e chỉ muốn xóa mấy cột e bôi vàng đấy anh,và copy hết vô file sheet data BáoCáoKhoTP T03.183 mà liên tục nhau đừng có khoản trống anh
 

File đính kèm

Upvote 0
f
file thành phẩm làm giống mấy file kia nhưng trong file báo cáo kho tp01 e chỉ muốn xóa mấy cột e bôi vàng đấy anh,và copy hết vô file sheet data BáoCáoKhoTP T03.183 mà liên tục nhau đừng có khoản trống anh
Còn 1 vấn đề nữa.
Trong sheet DATA ở file BáoCáoKhoTP T03.183.xlsm, cột Tồn đầu, Nhập và Tồn cuối chỉ có 1 cột.
Trong các sheet ngày ở file BáoCáoKhoTP1.xls, cột Tồn đầu, Nhập và Tồn cuối có 2 cột.
--> Bạn cần nêu rõ cách lấy dữ liệu cho 3 cột này.
 
Upvote 0
Upvote 0
Còn 1 vấn đề nữa.
Trong sheet DATA ở file BáoCáoKhoTP T03.183.xlsm, cột Tồn đầu, Nhập và Tồn cuối chỉ có 1 cột.
Trong các sheet ngày ở file BáoCáoKhoTP1.xls, cột Tồn đầu, Nhập và Tồn cuối có 2 cột.
--> Bạn cần nêu rõ cách lấy dữ liệu cho 3 cột này.
anh,em sửa file BáoCáoKhoTP T03.183 trong sheet data rồi nè anh,copy vô đúng thứ tự cột và bỏ mấy dòng em tô màu vàng
 

File đính kèm

Upvote 0
anh,em sửa file BáoCáoKhoTP T03.183 trong sheet data rồi nè anh,copy vô đúng thứ tự cột và bỏ mấy dòng em tô màu vàng
Code của bạn.
Mã:
Sub GPE3()
    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, Mon As String
    
    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")
    Mon = Application.InputBox("Nhap thang va nam", "GPE", Type:=2)
    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
                    lR1 = Ws.Range("M" & Rows.Count).End(xlUp).Row
                    Call Xoadong(Ws, "A", 6, lR1)
                    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.Name & "/" & Mon)
                        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
Sub Xoadong(Ws As Worksheet, Col As String, eRw As Long, lRw As Long)
    Ws.Range(Col & eRw).Resize(lRw - eRw + 1).SpecialCells(xlCellTypeBlanks, 23).EntireRow.Delete
End Sub
Cách dùng: tương tự các code ở các bài trước. Khác biệt là lúc có Inputbox hiện ra thì bạn điền thông tin tháng và năm, sau đó OK.
Ví dụ: tháng 03 năm 2018 thì điền 3/2018; tháng 10 năm 2019 thì điền 10/2019
Nguyên nhân: bạn đang điền: .03.2018 ở vị trí không thống nhất giữa các sheet
 
Upvote 0
Code của bạn.
Mã:
Sub GPE3()
    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, Mon As String
   
    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")
    Mon = Application.InputBox("Nhap thang va nam", "GPE", Type:=2)
    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
                    lR1 = Ws.Range("M" & Rows.Count).End(xlUp).Row
                    Call Xoadong(Ws, "A", 6, lR1)
                    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.Name & "/" & Mon)
                        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
Sub Xoadong(Ws As Worksheet, Col As String, eRw As Long, lRw As Long)
    Ws.Range(Col & eRw).Resize(lRw - eRw + 1).SpecialCells(xlCellTypeBlanks, 23).EntireRow.Delete
End Sub
Cách dùng: tương tự các code ở các bài trước. Khác biệt là lúc có Inputbox hiện ra thì bạn điền thông tin tháng và năm, sau đó OK.
Ví dụ: tháng 03 năm 2018 thì điền 3/2018; tháng 10 năm 2019 thì điền 10/2019
Nguyên nhân: bạn đang điền: .03.2018 ở vị trí không thống nhất giữa các sheet
cám ơn anh để em thử đã
 
Upvote 0
Code của bạn.
Mã:
Sub GPE3()
    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, Mon As String
   
    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")
    Mon = Application.InputBox("Nhap thang va nam", "GPE", Type:=2)
    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
                    lR1 = Ws.Range("M" & Rows.Count).End(xlUp).Row
                    Call Xoadong(Ws, "A", 6, lR1)
                    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.Name & "/" & Mon)
                        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
Sub Xoadong(Ws As Worksheet, Col As String, eRw As Long, lRw As Long)
    Ws.Range(Col & eRw).Resize(lRw - eRw + 1).SpecialCells(xlCellTypeBlanks, 23).EntireRow.Delete
End Sub
Cách dùng: tương tự các code ở các bài trước. Khác biệt là lúc có Inputbox hiện ra thì bạn điền thông tin tháng và năm, sau đó OK.
Ví dụ: tháng 03 năm 2018 thì điền 3/2018; tháng 10 năm 2019 thì điền 10/2019
Nguyên nhân: bạn đang điền: .03.2018 ở vị trí không thống nhất giữa các sheet
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ỉ?
 
Upvote 0
Web KT

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

Back
Top Bottom