Hỏi code vba copy sheets của file dang mo sang file khác.

Liên hệ QC

dtuntanh

Thành viên mới
Tham gia
13/8/13
Bài viết
41
Được thích
1
Em có một File Excle.xlsm đang mở, trong đó có nhiều Sheets. Giờ em muốn copy một sheet sang một file khác bằng code VBA mà không phải mở file đó lên. Mong các anh chị giúp đỡ. Em xin cảm ơn!
 
Em có một File Excle.xlsm đang mở, trong đó có nhiều Sheets. Giờ em muốn copy một sheet sang một file khác bằng code VBA mà không phải mở file đó lên. Mong các anh chị giúp đỡ. Em xin cảm ơn!
Mình thấy trên diễn dàn có code này không biết đúng ý bạn không.
Mã:
Private Sub CommandButton1_Click()
With Application.FileDialog(1)
        .InitialFileName = ThisWorkbook.Path
        .Title = "Chon file nguon"
        .FilterIndex = 3
        .AllowMultiSelect = False
        Do
            .Show
            If .SelectedItems.Count = 0 Then Exit Sub
            If .SelectedItems(1) = ThisWorkbook.FullName Then MsgBox "Khong chon file nay!"
        Loop Until .SelectedItems(1) <> ThisWorkbook.FullName
        Application.DisplayAlerts = False
        With Workbooks.Open(.SelectedItems(1))
[COLOR=#ff0000]             Sheets(1).Range(Sheets(1).[A1], Sheets(1).[E50000].End(xlUp)).Copy[/COLOR]
[COLOR=#ff0000]             ThisWorkbook.Sheets(1).[A60000].End(xlUp)(2).PasteSpecial Paste:=xlPasteValues[/COLOR]
            .Close False
        End With
        Application.DisplayAlerts = True
    End With
End Sub
Mở file A nhấn copy chọn file B
Bạn chỉ cần sữa phần tô màu đỏ là giá trị mình cần copy
 
Upvote 0
Cảm ơn bạn, nhưng ý mình là, mình đang mở file Excel và mình muốn copy sheets1 của file đang mở này vào một file Excel khác, bạn giúp mình với.
 
Upvote 0
Cảm ơn bạn, nhưng ý mình là, mình đang mở file Excel và mình muốn copy sheets1 của file đang mở này vào một file Excel khác, bạn giúp mình với.

Bài này ko khó úp file lên muốn copy khúc nào sheet nào sang file nào mình làm cho
còn nếu biết code tham khảo code VD Sau nha:
PHP:
Sub Copy_VD()
Application.ScreenUpdating = False
Dim Nguon(), kq(), i&, j&, k&
    Nguon = ActiveSheet.Range("A6:J82").Value
ReDim kq(1 To UBound(Nguon, 1), 1 To UBound(Nguon, 2))
For i = 1 To UBound(Nguon, 1)
    If Nguon(i, 3) <> "" Then
        k = k + 1
        For j = 1 To UBound(Nguon, 2)
            kq(k, j) = Nguon(i, j)
        Next
    End If
Next
MoFile
With Workbooks("Data.xlsb")
    Sheets("Data_Nhap").[A1048576].End(3)(2).Resize(UBound(Nguon, 1), 10) = kq
    .RunAutoMacros (xlAutoOpen)
    .Close True
End With
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Anh giúp em với, em muốn copy sheets("DATA1") sang một file Excel khác mà không cần mở file đó lên(File đích).
 

File đính kèm

  • Book1.xlsx
    34.6 KB · Đọc: 58
Upvote 0
Anh giúp em với, em muốn copy sheets("DATA1") sang một file Excel khác mà không cần mở file đó lên(File đích).

bạn thử code sau. Mở File nguon lên và chạy code
lưu ý file dich phải đang đóng nếu ko là báo lỗi
PHP:
Sub Copy_PasteFileDong()
Application.ScreenUpdating = False
Dim nguon(), OpenFile As String
nguon = Range([A1], [A65536].End(3)).Resize(, 26).Value
OpenFile = ThisWorkbook.Path & "\File_Dich.xlsb"
Workbooks.Open OpenFile
    With ActiveWorkbook
        With .ActiveSheet
            .UsedRange.ClearContents
            .[A65536].End(3).Resize(UBound(nguon), 26) = nguon
        End With
        .Close True
    End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • Copy Paste File Dong.rar
    38.3 KB · Đọc: 450
Upvote 0
VBA là code, chạy bút sa gà chết.
Copy sang sheet khác phải coi chừng nó có chồng lên sheet hiện tại. Một khi đóng file rồi là hết, không cứu vãn được nữa.
 
Upvote 0
VBA là code, chạy bút sa gà chết.
Copy sang sheet khác phải coi chừng nó có chồng lên sheet hiện tại. Một khi đóng file rồi là hết, không cứu vãn được nữa.

Không đến nỗi chạy là bút sa gà chết bác ơi. Có thể làm cái undo handler được nhưng lằng nhằng thôi, tốt nhất là luôn backup trước khi sử dụng.
 
Upvote 0
Upvote 0
Không đến nỗi chạy là bút sa gà chết bác ơi. Có thể làm cái undo handler được nhưng lằng nhằng thôi, tốt nhất là luôn backup trước khi sử dụng.

Tôi chỉ cảnh báo trên lô gic quy trình làm việc. Lô gíc là file B luôn luôn đóng cho nên chả hề được kiểm soát nếu có chỗ sai. Nếu sau này mới mở ra và biết thỉ lấy gì sửa.
Tôi chưa thử dùng file A undo file B bao giờ nên không rành lắm. Có thể đã cảnh báo sai.
 
Upvote 0
Tôi chỉ cảnh báo trên lô gic quy trình làm việc. Lô gíc là file B luôn luôn đóng cho nên chả hề được kiểm soát nếu có chỗ sai. Nếu sau này mới mở ra và biết thỉ lấy gì sửa.
Tôi chưa thử dùng file A undo file B bao giờ nên không rành lắm. Có thể đã cảnh báo sai.

Không sai bác ạ, trong nhiều trường hợp đúng là bút sa gà chết, nhưng chúng ta luôn có thể tránh các trường hợp này, back up lại. Cẩn tắc vô áy náy mà :)
 
Upvote 0
Bạn giúp mình thêm việc này với, Mình đang ở sheets4 và ấn vào nút lệnh thì hiện lên một from, mình muốn tạo một nút lệnh trên form đó và khi ấn vào thì copy dữ liệu ở sheets"DATA1" sang file khác như hôm trước mình gửi cho bạn. Bạn giúp mình đoạn code đó với. Mình xin cảm ơn!
 
Upvote 0
Bạn giúp mình thêm việc này với, Mình đang ở sheets4 và ấn vào nút lệnh thì hiện lên một from, mình muốn tạo một nút lệnh trên form đó và khi ấn vào thì copy dữ liệu ở sheets"DATA1" sang file khác như hôm trước mình gửi cho bạn. Bạn giúp mình đoạn code đó với. Mình xin cảm ơn!

Form mình chưa làm bao giờ hỏng biết làm được ko nữa . thử xem nếu được mình úp lên cho nha
 
Upvote 0
Bạn giúp mình thêm việc này với, Mình đang ở sheets4 và ấn vào nút lệnh thì hiện lên một from, mình muốn tạo một nút lệnh trên form đó và khi ấn vào thì copy dữ liệu ở sheets"DATA1" sang file khác như hôm trước mình gửi cho bạn. Bạn giúp mình đoạn code đó với. Mình xin cảm ơn!
Hôm nay mình ngồi Voc form một ngày thấy cũng ko khó lắm trừ những cái cao cấp còn bình bình mình cũng xử được tuốt...
mình làm cho bạn tải file này về thay thế file cũ nha
mình viết thêm cho bạn một code khác cũng tương tự như vậy nhưng hơi khác một tí .... code này file dich đang đóng hay mở nó cũng mần hết và ĐẶC BIỆT dành ai nhát Gan nữa nha
PHP:
Sub Copy_PasteFileDong2() ''Minh viet cho ban 2 trong mot
Application.ScreenUpdating = False
Dim nguon(), Wh As Workbook, OpenFile As String
OpenFile = ThisWorkbook.Path & "\File_Dich.xlsb"
nguon = Range([A1], [A65536].End(3)).Resize(, 26).Value
For Each Wh In Workbooks
    If Wh.Name <> ThisWorkbook.Name Then
        Wh.Close savechanges:=False
    End If
Next Wh
Workbooks.Open OpenFile
With Workbooks("File_Dich.xlsb")
    With Sheets("sheet1")
        .UsedRange.ClearContents '''Neu xoa dong nay di thi copy moi duoi nhau_Con ko thi nguoc lai
        .[A65536].End(3).Resize(UBound(nguon), 26) = nguon
    End With
    .Close True
End With
Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • File nguon.xlsb
    50.2 KB · Đọc: 235
Lần chỉnh sửa cuối:
Upvote 0
Hôm nay mình ngồi Voc form một ngày thấy cũng ko khó lắm trừ những cái cao cấp còn bình bình mình cũng xử được tuốt...
mình làm cho bạn tải file này về thay thế file cũ nha
mình viết thêm cho bạn một code khác cũng tương tự như vậy nhưng hơi khác một tí .... code này file dich đang đóng hay mở nó cũng mần hết và ĐẶC BIỆT dành ai nhát Gan nữa nha
PHP:
Sub Copy_PasteFileDong2() ''Minh viet cho ban 2 trong mot
Application.ScreenUpdating = False
Dim nguon(), Wh As Workbook, OpenFile As String
OpenFile = ThisWorkbook.Path & "\File_Dich.xlsb"
nguon = Range([A1], [A65536].End(3)).Resize(, 26).Value
For Each Wh In Workbooks
    If Wh.Name <> ThisWorkbook.Name Then
        Wh.Close savechanges:=False
    End If
Next Wh
Workbooks.Open OpenFile
With Workbooks("File_Dich.xlsb")
    With Sheets("sheet1")
        .UsedRange.ClearContents '''Neu xoa dong nay di thi copy moi duoi nhau_Con ko thi nguoc lai
        .[A65536].End(3).Resize(UBound(nguon), 26) = nguon
    End With
    .Close True
End With
Application.ScreenUpdating = True
End Sub

Bạn ơi giúp mình vụ này nữa với, mình muốn tạo một nút ở sheets 1 khi ấn vào thì copy dữ liệu ở 5 file excel khác nhau và xếp vào sheets ở file hiện hành theo thư tự như sau:
file 1 copy từ cột A1:C20 vào sheets 2 của file đang mở từ cột A1:C20
file 2 copy từ cột A1:C20 vào sheets 2 của file đang mở từ cột B1:C20
và các file khác cũng tương tự.
Bạn giúp mình với nhé. mình xin cảm ơn.
 
Upvote 0
Bạn ơi giúp mình vụ này nữa với, mình muốn tạo một nút ở sheets 1 khi ấn vào thì copy dữ liệu ở 5 file excel khác nhau và xếp vào sheets ở file hiện hành theo thư tự như sau:
file 1 copy từ cột A1:C20 vào sheets 2 của file đang mở từ cột A1:C20
file 2 copy từ cột A1:C20 vào sheets 2 của file đang mở từ cột B1:C20
và các file khác cũng tương tự.
Bạn giúp mình với nhé. mình xin cảm ơn.
bạn úp cả mấy file đó lên cùng dữ liệu thực hiên copy mình xem nếu được mình làm cho nha...mình cũng đang tập viết code mà
vô tư đi sai mần lại nha
nêu yêu cầu cụ thể một tí vùng cần copy đích đến ....
 
Upvote 0
Có cách nào Copy các sheet có tên B1, B2, B3, B4, B5 ở nhiều file vào một file không ạ
 
Upvote 0
Mình đang dùng cái #13 chạy OK. Cho hỏi là mình muốn đang đứng ở sheet2 file nguồn mà chạy lệnh nó copy từ sheet4 ở file nguồn sang sheet 1 file đích được không ạ ? Nếu đc thì bổ sung sao ạ vì mình không biết gì về cái này cả. Ai biết bổ sung dùm mình đc không ? Thanks ạ
 
Upvote 0
Mình đang dùng cái #13 chạy OK. Cho hỏi là mình muốn đang đứng ở sheet2 file nguồn mà chạy lệnh nó copy từ sheet4 ở file nguồn sang sheet 1 file đích được không ạ ? Nếu đc thì bổ sung sao ạ vì mình không biết gì về cái này cả. Ai biết bổ sung dùm mình đc không ? Thanks ạ
Bạn thử thêm địa chỉ cần copy vào chỗ nguồn từ:
nguon = Range([A1], [A65536].End(3)).Resize(, 26).Value
hoặc
nguon = ActiveSheet.Range([A1], [A65536].End(3)).Resize(, 26).Value
Thành:
nguon = Sheets("ten sheet").Range([A1], [A65536].End(3)).Resize(, 26).Value
Ví dụ như trong yêu càu của bạn thì là:
nguon =Sheet4.Range([A1], [A65536].End(3)).Resize(, 26).Value
và chạy thử
 
Upvote 0
Bạn thử thêm địa chỉ cần copy vào chỗ nguồn từ:
nguon = Range([A1], [A65536].End(3)).Resize(, 26).Value
hoặc
nguon = ActiveSheet.Range([A1], [A65536].End(3)).Resize(, 26).Value
Thành:
nguon = Sheets("ten sheet").Range([A1], [A65536].End(3)).Resize(, 26).Value
Ví dụ như trong yêu càu của bạn thì là:
nguon =Sheet4.Range([A1], [A65536].End(3)).Resize(, 26).Value
và chạy thử
Đã thử và không hoạt động bạn
1636690971072.png
 
Upvote 0
Web KT
Back
Top Bottom