Copy từ sheet này sang sheet kia mà không cần mở sheet kia lên

Liên hệ QC

HoangHacVT

Thành viên chính thức
Tham gia
3/6/09
Bài viết
82
Được thích
41
Nghề nghiệp
Marketing và bất cứ thứ gì người đẹp nhờ
Chào nhà GPE,
Có cách nào để copy dữ liệu từ sheet1 của file A sang sheet1 của file B mà không cần mở file B lên không?
Cám ơn,
Hạc
 
Upvote 0
Upvote 0
Ngoài việc dùng ADO để copy, ta cũng có thể dùng VBA mở file nguồn ở dạng ẩn file rồi thực hiện sao chép sau đó đóng file nguồn lại
Mời bạn xem code

PHP:
Sub ChepDuLieu()
    On Error Resume Next
    Dim Ex As Excel.Application
    Set Ex = New Excel.Application
    Dim WbN As Workbook
    Dim WsN As Worksheet
    Dim WsD As Worksheet
    Set WbN = Ex.Workbooks.Open("E:\GPE\KTDNTM.xls")
    Set WsN = WbN.Worksheets("NKC")
    Ex.Visible = False
    Set WsD = Sheet1
    WsN.Cells.Copy
    WsD.Range("A1").PasteSpecial 3
    WsN.Application.CutCopyMode = False
    Ex.Visible = True
    WbN.Close False
    Set WbN = Nothing: Set Ex = Nothing
End Sub

P/S : Bạn thay tên file nguồn cho phù hợp
Thân
 
Upvote 0
Ngoài việc dùng ADO để copy, ta cũng có thể dùng VBA mở file nguồn ở dạng ẩn file rồi thực hiện sao chép sau đó đóng file nguồn lại
Mời bạn xem code

PHP:
Sub ChepDuLieu()
    On Error Resume Next
    Dim Ex As Excel.Application
    Set Ex = New Excel.Application
    Dim WbN As Workbook
    Dim WsN As Worksheet
    Dim WsD As Worksheet
    Set WbN = Ex.Workbooks.Open("E:\GPE\KTDNTM.xls")
    Set WsN = WbN.Worksheets("NKC")
    Ex.Visible = False
    Set WsD = Sheet1
    WsN.Cells.Copy
    WsD.Range("A1").PasteSpecial 3
    WsN.Application.CutCopyMode = False
    Ex.Visible = True
    WbN.Close False
    Set WbN = Nothing: Set Ex = Nothing
End Sub
P/S : Bạn thay tên file nguồn cho phù hợp
Thân
Bạn ơi! Chỉ trừ phi bạn làm việc trên 1 ứng dụng khác thì mới cần đến Dim Ex As Excel.Application
Ta đang làm việc với Excel cơ mà
PHP:
Sub Macro1()
  With Workbooks.Open("Đường dẩn đến file")
    Sheets("Sheet1").Copy ThisWorkbook.Sheets(1)
    .Close (False)
  End With
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy thì dùng công cụ sẵn có của Excel theo hình sau:
Nếu muốn code thì bạn có thể record lại macro nhé.

Ủa mà sao lại là import data nhỉ? Phải là export chứ vì mình đang làm việc trên file này và copy dữ liệu sang file kia, nhưng có làm việc trên file kia đâu? Mà mình tì hoài chưa thấy im-ex data trên excel 2007. Chỉ mình tiếp nhá!
 
Upvote 0
Bạn ơi! Chỉ trừ phi bạn làm việc trên 1 ứng dụng khác thì mới cần đến Dim Ex As Excel.Application
Ta đang làm việc với Excel cơ mà
PHP:
Sub Macro1()
  With Workbooks.Open("Đường dẩn đến file")
    Sheets("Sheet1").Copy ThisWorkbook.Sheets(1)
    .Close (False)
  End With
End Sub


Sorry NDU, đoạn code này lấy từ Access, quên không chỉnh sửa
Thân
 
Upvote 0
Vậy thì dùng công cụ sẵn có của Excel theo hình sau:
Nếu muốn code thì bạn có thể record lại macro nhé.
Import hay Export đều là công cụ tốt!
Vấn đề là nếu bạn copy ra nhiều file hoặc copy từ nhiều file thì sau khi record macro xong bạn phải thêm vòng lập vào code (để duyệt qua các file), đúng không? ---> Và khi bấm Alt + F11 để mở cửa sổ lập trình, e rằng bạn sẽ thấy... choáng vì chẳng biết đường nào mà sửa ---> Code rất phức tạp
Thử xem biết liền
 
Upvote 0
PHP:
Sub Macro1()
With Workbooks.Open("Đường dẩn đến file")
Sheets("Sheet1").Copy ThisWorkbook.Sheets(1)
.Close (False)
End With
End Sub
[/QUOTE]

To NDu với đoạn code của anh vậy khi minh chạy code thì nó sẽ tự động insert sheet mới vào vậy có cách nào mình không insert sheet mới vào không anh. Ví dụ mình quy định nó chỉ paste vào sheet1 của workbook hiện hành thôi em thử mà không được mong anh chỉ giúp. Thanks
 
Upvote 0
Bạn sửa lại thành:
Mã:
Sub Macro1()
With Workbooks.Open("Đường dẩn đến file")[COLOR=Blue]
Sheets("Sheet1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("a1")[/COLOR] 
.Close (False)
End With
End Sub
 
Upvote 0

Kakaka, thử liền rồi chứ. Đã biết cách xài Import data trong excel 2007. Nhưng không tìm thấy export data ở đâu cả. Mình vẫn cứ muốn dùng export để control dữ liệu từ file gốc thôi.

Nhưng cái file xài Import cũng rất hay, mình có thể nhập dữ liệu vào file của mình và cho đứa kia import vào file của nó, như vậy nó chỉ được xái chứ vô phương chỉnh sửa bất cứ cái gì trong file gốc. Thế nhưng nó lại nảy nòi thêm mấy vấn đề nữa nhức cả đầu:
1) Nếu bỏ pass vô file gốc là bó cả tay lẫn chân.
2) Trong file lấy dữ liệu, dữ liệu import xong bị tự động tô màu cách hàng. Cách này làm cho file đó hơi dễ dòm hơn nhưng thử đủ mọi cách vẫn không bỏ cái màu đi được.

Import hay Export đều là công cụ tốt!
Vấn đề là nếu bạn copy ra nhiều file hoặc copy từ nhiều file thì sau khi record macro xong bạn phải thêm vòng lập vào code (để duyệt qua các file), đúng không? ---> Và khi bấm Alt + F11 để mở cửa sổ lập trình, e rằng bạn sẽ thấy... choáng vì chẳng biết đường nào mà sửa ---> Code rất phức tạp

Vấn đề là mình chưa bao giờ học về lập trình cả nên mọi thứ đối với mình đều rất phức tạp, nhưng do đó mình có thói quen mò mẫm nhiều thứ. Bác cứ ghi ra mình sẽ thử. Mình chưa hiểu thì cứ copy ra xài trước cũng rất tốt, hehe..

Mình cũng chưa biết cách viết vòng lặp như thế nào ( chưa copy được của ai), bác chỉ cho mình cái ( cái dơn giản nhất ấy).

Cám ơn bác rất nhiều,
Hạc
 
Upvote 0
Web KT

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

Back
Top Bottom