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

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,
Bạn nói rõ lại các vấn đề sau:
- Bạn muốn lấy toàn bộ dữ liệu các Sheet của file BÁO CÁO THÀNH PHẨM 1 sang sheet Data của file báo cáo thanh phan 3 đúng không?
- Có phải cột "X.kd/CS" của file tổng hợp sẽ lấy dữ liệu từ cột "TT/CX" của file dữ liệu hay không?
 
Upvote 0
-dạ đúng anh lấy dữ liệu toàn bộ sheet của file báo cao thàng phẩm 1 sang sheet data bao cao thanh phan 3
-dúng rùi anh cộ x.kd/cs lấy file tổng hợp sẽ lấy dữ liệu từ cộ tt/cx anh
cám ơn anh
 
Upvote 0
-dạ đúng anh lấy dữ liệu toàn bộ sheet của file báo cao thàng phẩm 1 sang sheet data bao cao thanh phan 3
-dúng rùi anh cộ x.kd/cs lấy file tổng hợp sẽ lấy dữ liệu từ cộ tt/cx anh
cám ơn anh
Gửi bạn code
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
    
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                sArr() = Ws.Range("B6").Resize(lR1, 10).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("C" & lR2).Resize(lR1, 10) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
 
Upvote 0
Gửi bạn code
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
   
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                sArr() = Ws.Range("B6").Resize(lR1, 10).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("C" & lR2).Resize(lR1, 10) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
anh ơi code này điền ngày vô kg đúng anh,ví dụ hôm nay 7/08/2018 nó kg hiện đúng ngày mà hiện 1/1/1900
 
Upvote 0
anh ơi code này điền ngày vô kg đúng anh,ví dụ hôm nay 7/08/2018 nó kg hiện đúng ngày mà hiện 1/1/1900
Bạn chú ý dòng code này
Mã:
.Range("A" & lR2).Resize(lR1) = Ws.Name
Mình nghĩ là bạn lấy ngày để đặt tên cho Sheet luôn.
Vậy ngày mà bạn cần có phải là 10 ký tự cuối cùng của ô A2 ở mỗi sheet không?
Nếu như vậy, bạn sửa dòng code trên thành:
Mã:
.Range("A" & lR2).Resize(lR1) = Right(Ws.Range("A2"),10)
 
Upvote 0
anh ơi code này điền ngày vô kg đúng anh,ví dụ hôm nay 7/08/2018 nó kg hiện đúng ngày mà hiện 1/1/1900
Bạn chỉ biết áp dụng mà không nghĩ thêm để ra được vấn đề.
Cột A của sheet DATA là tên của mỗi sheet lấy từ File BÁO CÁO THÀNH PHẨM 1, tại cột A của sheet DATA bạn định dạng theo kiểu ngày tháng thì sẽ được kết quả tên sheet, còn bạn muốn chính xác thì phải đặt tên từng sheet của File BÁO CÁO THÀNH PHẨM 1 trùng khớp với ngày tại dòng 2 của mỗi sheet.
 
Upvote 0
Bạn chú ý dòng code này
Mã:
.Range("A" & lR2).Resize(lR1) = Ws.Name
Mình nghĩ là bạn lấy ngày để đặt tên cho Sheet luôn.
Vậy ngày mà bạn cần có phải là 10 ký tự cuối cùng của ô A2 ở mỗi sheet không?
Nếu như vậy, bạn sửa dòng code trên thành:
Mã:
.Range("A" & lR2).Resize(lR1) = Right(Ws.Range("A2"),10)
vậy mình lấy ngày để đặt luôn sheet hả anh,mà e hỏi anh chút nha,em muốn bỏ mấy dòng cuối cùng trong sheet đấy anh dòng mà e tô vàng đấy anh vậy mình bỏ làm sao a
 

File đính kèm

Upvote 0
vậy mình lấy ngày để đặt luôn sheet hả anh,mà e hỏi anh chút nha,em muốn bỏ mấy dòng cuối cùng trong sheet đấy anh dòng mà e tô vàng đấy anh vậy mình bỏ làm sao a
Việc đặt tên như thế nào thì là do người dùng, miễn sao phải xác định:
- Có quy tắc rõ ràng;
- Thuận tiện cho việc kiểm tra;
- Đơn giản, dễ hiểu.
Khi bạn đặt tên có quy tắc thì việc lấy dữ liệu sẽ dễ dàng.
Code tôi đã gửi bạn có lấy mấy dòng bôi vàng đâu nhỉ?
 
Upvote 0
Việc đặt tên như thế nào thì là do người dùng, miễn sao phải xác định:
- Có quy tắc rõ ràng;
- Thuận tiện cho việc kiểm tra;
- Đơn giản, dễ hiểu.
Khi bạn đặt tên có quy tắc thì việc lấy dữ liệu sẽ dễ dàng.
Code tôi đã gửi bạn có lấy mấy dòng bôi vàng đâu nhỉ?
kg ý em nói là cài dòng bôi vàng trong file báo cáo thành phẩm 1 đấy anh e muốn xóa máy dòng cuối đó anh ma code anh kg thấy từ đâu đến đâu hết a
 
Upvote 0

File đính kèm

Upvote 0
kg ý em nói là cài dòng bôi vàng trong file báo cáo thành phẩm 1 đấy anh e muốn xóa máy dòng cuối đó anh ma code anh kg thấy từ đâu đến đâu hết a
Bạn chạy code sau:
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
    
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1, 10).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("C" & lR2).Resize(lR1, 10) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
 
Upvote 0
các anh cho e hỏi em nhập code chạy rùi nhưng có doạn trong file boot 1,chạy vô file báo cáo thành phẩm 3 trong sheet data kg có cột mã hàng anh
 

File đính kèm

Upvote 0
Bạn chạy code sau:
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
   
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1, 10).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("C" & lR2).Resize(lR1, 10) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
các anh cho e hỏi em nhập code chạy rùi nhưng có doạn trong file boot 1,chạy vô file báo cáo thành phẩm 3 trong sheet data kg có cột mã hàng anh
 

File đính kèm

Upvote 0
các anh cho e hỏi em nhập code chạy rùi nhưng có doạn trong file boot 1,chạy vô file báo cáo thành phẩm 3 trong sheet data kg có cột mã hàng anh
Bạn đưa dữ liệu lên để hỏi 1 kiểu, thực tế 1 kiểu thì làm sao có câu trả lời đúng được.
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
    
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1, 11).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("B" & lR2).Resize(lR1, 11) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
 
Upvote 0
Bạn đưa dữ liệu lên để hỏi 1 kiểu, thực tế 1 kiểu thì làm sao có câu trả lời đúng được.
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
   
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1, 11).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1) = Ws.Name
                    .Range("B" & lR2).Resize(lR1, 11) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
kg phải anh cái cột mã hàng ở báo cáo thành phẩn 3 dấy anh nó kg chạy anh vì e bấm chạy hoài cột mã hàng kg thấy hiện lên ở file sheet data anh
 
Upvote 0
kg phải anh cái cột mã hàng ở báo cáo thành phẩn 3 dấy anh nó kg chạy anh vì e bấm chạy hoài cột mã hàng kg thấy hiện lên ở file sheet data anh
Gửi lại bạn code chuẩn:
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
    
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1 - 5, 11).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1 - 5) = Ws.Name
                    .Range("B" & lR2).Resize(lR1 - 5, 11) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
File bài #1 bạn đưa lên không có mã hàng nên khi code của tôi không thể lấy được.
File bạn đưa lên sau mới có, tôi đã sửa lại theo đúng ý bạn.
Bạn lưu ý khi đưa dữ liệu lên, không nhất thiết phải là dữ liệu thật nhưng Template thì phải chuẩn. Có như vậy mọi người mới đưa ra giải pháp chính xác, nhanh nhất cho bạn được.
 
Upvote 0
Gửi lại bạn code chuẩn:
Mã:
Sub GPE()
    Dim Wb As Workbook, Ws As Worksheet, Master As Worksheet
    Dim Item As Variant, lR1 As Long, lR2 As Long, sArr()
  
    Application.ScreenUpdating = False
    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
                lR1 = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A" & (lR1 + 1), Ws.Range("A" & (lR1 + 1)).End(xlDown)).EntireRow.Delete
                sArr() = Ws.Range("B6").Resize(lR1 - 5, 11).Value
                With Master
                    lR2 = .Range("A" & Rows.Count).End(xlUp).Row + 1
                    .Range("A" & lR2).Resize(lR1 - 5) = Ws.Name
                    .Range("B" & lR2).Resize(lR1 - 5, 11) = sArr
                End With
                Erase sArr
            Next Ws
            Wb.Close True
        Next Item
    End With
    Set Master = Nothing: Set Wb = Nothing
    Application.ScreenUpdating = True
    MsgBox "Done", vbInformation, "----Mr.GPE----"
End Sub
File bài #1 bạn đưa lên không có mã hàng nên khi code của tôi không thể lấy được.
File bạn đưa lên sau mới có, tôi đã sửa lại theo đúng ý bạn.
Bạn lưu ý khi đưa dữ liệu lên, không nhất thiết phải là dữ liệu thật nhưng Template thì phải chuẩn. Có như vậy mọi người mới đưa ra giải pháp chính xác, nhanh nhất cho bạn được.
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
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
mà các anh cho mình hỏi này luôn ở đây cùng cách làm mà mình chuyển qua 2 file có được kg,với lại file báo cáo kho tp,bao cao kho tp03.183,nó hơi khác vậy mình sửa thế náo anh mong các anh chỉ giúp e,e bị sếp hối quá
vd cùng code dó em muốn chuyển tất cả các sheet file báo cáo công cụ sang sheet data file báo cáo cong cụ 23 đươc kg mấy a
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom