Mình thấy trên diễn dàn có code này không biết đúng ý bạn không.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!
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
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.
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
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).
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
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.
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.
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...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!
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
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 ú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à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 thử thêm địa chỉ cần copy vào chỗ nguồn từ: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 ạ
Đã thử và không hoạt động bạnBạ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ử