PDA

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



HoangHacVT
22-07-10, 09:10 AM
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

Hai Lúa Miền Tây
22-07-10, 09:21 AM
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
Cho mình hỏi thêm là copy toàn bộ sheet1 hay là 1 vùng nào đó thôi vậy bạn

viehoai
22-07-10, 09:38 AM
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
Bạn xem bài này nhé
http://www.giaiphapexcel.com/forum/archive/index.php/t-26034.html
http://www.giaiphapexcel.com/forum/showthread.php?34527-H%E1%BB%8Fi-code-VBA-t%C6%B0%C6%A1ng-%C4%91%C6%B0%C6%A1ng-h%C3%A0m-Code-v%C3%A0-h%C3%A0m-Sum-trong-excel/page2

HoangHacVT
22-07-10, 11:22 AM
Cho mình hỏi thêm là copy toàn bộ sheet1 hay là 1 vùng nào đó thôi vậy bạn

Copy nguyên sheet luôn.

MinhNguyệt
22-07-10, 12:25 PM
Copy nguyên sheet luôn.
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


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

ndu96081631
22-07-10, 01:54 PM
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


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 SubP/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à


Sub Macro1()
With Workbooks.Open("Đường dẩn đến file")
Sheets("Sheet1").Copy ThisWorkbook.Sheets(1)
.Close (False)
End With
End Sub

Hai Lúa Miền Tây
22-07-10, 02:16 PM
Copy nguyên sheet luôn.
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é.

49336

49337

49338

49339

Sau này muốn nó cập nhật thì bấm vào đây

49340

HoangHacVT
22-07-10, 02:23 PM
[QUOTE=domfootwear;255721]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á!

MinhNguyệt
22-07-10, 03:05 PM
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à


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

ndu96081631
22-07-10, 03:17 PM
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

nmhung49
22-07-10, 03:37 PM
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

Hai Lúa Miền Tây
22-07-10, 04:09 PM
Bạn sửa lại thành:

Sub Macro1()
With Workbooks.Open("Đường dẩn đến file")
Sheets("Sheet1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("a1")
.Close (False)
End With
End Sub

HoangHacVT
22-07-10, 05:15 PM
Thử xem biết liền

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

thaycung
22-07-10, 06:08 PM
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é.

Làm theo cách này thì không copy được định dạng và công thức trong sheet nguồn hả bạn?