Macro copy dữ liệu từ file này sang file khác (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

phamxuyenp171

Thành viên hoạt động
Tham gia
2/4/09
Bài viết
103
Được thích
124
Xin mọi người giúp đỡ!
Tôi đã ghi một Macro trên file nguồn làm nhiệm vụ copy dữ liệu từ file "Nguồn" sang file đích "TenBatKi" (file đích này có tên tùy ý). Khi chạy macro này tôi thấy rằng:
- Nếu file nguồn được mở trước thì copy tốt
- Nhưng khi file đích được mở trước thi không copy được
Xin hỏi mọi người, làm thế nào để file đích có tên tùy ý này dù được mở ra trước thì vẫn chạy được macro trên file nguồn để copy dữ liệu vào file đích.
Xin cảm ơn!
 

File đính kèm

Xin mọi người giúp đỡ!
Tôi đã ghi một Macro trên file nguồn làm nhiệm vụ copy dữ liệu từ file "Nguồn" sang file đích "TenBatKi" (file đích này có tên tùy ý). Khi chạy macro này tôi thấy rằng:
- Nếu file nguồn được mở trước thì copy tốt
- Nhưng khi file đích được mở trước thi không copy được
Xin hỏi mọi người, làm thế nào để file đích có tên tùy ý này dù được mở ra trước thì vẫn chạy được macro trên file nguồn để copy dữ liệu vào file đích.
Xin cảm ơn!
Ví dụ bạn đang mở file Nguồn và 2 file khác. Làm sao biết được dữ liệu sẽ được dán vào file nào? Yêu cầu của bạn có vẻ vô lý quá.
 
Upvote 0
Xin mọi người giúp đỡ!
Tôi đã ghi một Macro trên file nguồn làm nhiệm vụ copy dữ liệu từ file "Nguồn" sang file đích "TenBatKi" (file đích này có tên tùy ý). Khi chạy macro này tôi thấy rằng:
- Nếu file nguồn được mở trước thì copy tốt
- Nhưng khi file đích được mở trước thi không copy được
Xin hỏi mọi người, làm thế nào để file đích có tên tùy ý này dù được mở ra trước thì vẫn chạy được macro trên file nguồn để copy dữ liệu vào file đích.
Xin cảm ơn!
Sửa code thành vầy đi
Mã:
Sub ExtractData()
  On Error Resume Next
  Application.DisplayAlerts = False
  With Workbooks.Open([COLOR=red][B]ThisWorkbook.Path & "\TenBatKi.xls"[/B][/COLOR])
    ThisWorkbook.Sheets("Sheet1").Range("A4:A14").Copy .Sheets(1).Range("A4")
    .Close True
  End With
  Application.DisplayAlerts = True
End Sub
Sửa đoạn ThisWorkbook.Path & "\TenBatKi.xls" thành đường dẫn khác cho phù hợp trên máy bạn
 
Upvote 0
Sửa code thành vầy đi
Mã:
Sub ExtractData()
  On Error Resume Next
  Application.DisplayAlerts = False
  With Workbooks.Open([COLOR=red][B]ThisWorkbook.Path & "\TenBatKi.xls"[/B][/COLOR])
    ThisWorkbook.Sheets("Sheet1").Range("A4:A14").Copy .Sheets(1).Range("A4")
    .Close True
  End With
  Application.DisplayAlerts = True
End Sub
Sửa đoạn ThisWorkbook.Path & "\TenBatKi.xls" thành đường dẫn khác cho phù hợp trên máy bạn
Anh xem lại yêu cầu của bạn ấy. TenBatKi chỉ là ví dụ thôi. Ý bạn ấy là file có tên gì cũng được tuốt.
 
Upvote 0
Cảm ơn mọi người! Tuy nhiên ý của tôi là:
- File đích có tên tùy ý (tức là tên gì cũng được), và nó nằm ở đường dẫn nào đó không cần biết, chỉ cần file đó đang được mở để chờ được dán (Paste) dữ liệu vào.
- File nguồn cũng không cần đường dẫn. Chỉ biết rằng file này cũng đang được mở ra cùng với file đích
- Làm sao để file đích được mở trước (nó nằm ở phía trước trên thanh trạng thái), file nguồn mở sau(nó nằm ở phía sau trên thanh trạng thái) nhưng vẫn có thể chạy Macro copy từ file nguồn sang file đích (Macro được ghi trên file nguồn).
 
Upvote 0
Cảm ơn mọi người! Tuy nhiên ý của tôi là:
- File đích có tên tùy ý (tức là tên gì cũng được), và nó nằm ở đường dẫn nào đó không cần biết, chỉ cần file đó đang được mở để chờ được dán (Paste) dữ liệu vào.
- File nguồn cũng không cần đường dẫn. Chỉ biết rằng file này cũng đang được mở ra cùng với file đích
- Làm sao để file đích được mở trước (nó nằm ở phía trước trên thanh trạng thái), file nguồn mở sau(nó nằm ở phía sau trên thanh trạng thái) nhưng vẫn có thể chạy Macro copy từ file nguồn sang file đích (Macro được ghi trên file nguồn).
Thì code ở trên đấy, bạn thử chưa?
File đích có mở hay không chẳng quan trọng gì, miễn là bạn ghi đường dẩn chính xác là được rồi
 
Upvote 0
Cảm ơn mọi người! Tuy nhiên ý của tôi là:
- File đích có tên tùy ý (tức là tên gì cũng được), và nó nằm ở đường dẫn nào đó không cần biết, chỉ cần file đó đang được mở để chờ được dán (Paste) dữ liệu vào.
- File nguồn cũng không cần đường dẫn. Chỉ biết rằng file này cũng đang được mở ra cùng với file đích
- Làm sao để file đích được mở trước (nó nằm ở phía trước trên thanh trạng thái), file nguồn mở sau(nó nằm ở phía sau trên thanh trạng thái) nhưng vẫn có thể chạy Macro copy từ file nguồn sang file đích (Macro được ghi trên file nguồn).
Trường hợp tôi ví dụ ở bài #2 thì làm như thế nào?
 
Upvote 0
Cảm ơn mọi người! Tuy nhiên ý của tôi là:
- File đích có tên tùy ý (tức là tên gì cũng được), và nó nằm ở đường dẫn nào đó không cần biết, chỉ cần file đó đang được mở để chờ được dán (Paste) dữ liệu vào.
- File nguồn cũng không cần đường dẫn. Chỉ biết rằng file này cũng đang được mở ra cùng với file đích
- Làm sao để file đích được mở trước (nó nằm ở phía trước trên thanh trạng thái), file nguồn mở sau(nó nằm ở phía sau trên thanh trạng thái) nhưng vẫn có thể chạy Macro copy từ file nguồn sang file đích (Macro được ghi trên file nguồn).

Code này của ông thầy ndu96081631 ah nha, chứ không phải của mình ah, Làm vui vậy mà. chưa có khã năng.
 
Upvote 0
Ở đây tôi nói là chỉ có 2 file được mở: 1 file nguồn và 1 file đích chứ làm gì có 2 file đích
Thế thì vầy:
PHP:
Sub ExtractData()
  Dim i As Long, dWbk As Workbook
  On Error Resume Next
  For i = 1 To Workbooks.Count
    If Workbooks(i).Name <> ThisWorkbook.Name Then
      Set dWbk = Workbooks(i)
      Exit For
    End If
  Next
  ThisWorkbook.Sheets("Sheet1").Range("A4:A14").Copy dWbk.Sheets(1).Range("A4")
End Sub
Mà nguy hiểm quá, ai dám chắc rằng lúc nào cũng có 2 Wb mở (lở mở 3, 4 Wb thì sao?) ---> Nó copy và paste nhầm ráng chịu nha
 

File đính kèm

Upvote 0
Code này của ông thầy ndu96081631 ah nha, chứ không phải của mình ah, Làm vui vậy mà. chưa có khã năng.
Các anh thử đổi tên file đích: "TenBatKi" thành tên khác như: "TenBatKi2" rồi xem thử. --> Tôi thử đổi tên file đích thì không chạy được.
Vì theo công việc của tôi,file nguồn thì chỉ có 1 file nhưng file đích thì có rất nhiều, mỗi file có tên riêng nhưng các file đều có vùng cần nhập dữ liệu giống nhau hoàn toàn. Vì thế tôi mới yêu cầu file đích là có tên bất kì. Mong các anh tiếp tục giúp đỡ.
 
Upvote 0
Thế thì vầy:
PHP:
Sub ExtractData()
Dim i As Long, dWbk As Workbook
On Error Resume Next
For i = 1 To Workbooks.Count
If Workbooks(i).Name <> ThisWorkbook.Name Then
Set dWbk = Workbooks(i)
Exit For
End If
Next
ThisWorkbook.Sheets("Sheet1").Range("A4:A14").Copy dWbk.Sheets(1).Range("A4")
End Sub
Mà nguy hiểm quá, ai dám chắc rằng lúc nào cũng có 2 Wb mở (lở mở 3, 4 Wb thì sao?) ---> Nó copy và paste nhầm ráng chịu nha
Sao cái này nó không chạy được hả anh
 
Upvote 0
Sao cái này nó không chạy được hả anh
Tôi test kỹ mới đưa lên bạn à ---> Bất cứ file đích tên gi, miễn mở cùng với file nguồn đều chạy được
Chỉ có 1 khả năng duy nhất khiến code không chạy, đó là:
- Bạn mở file nguồn
- Xong, bạn khởi động 1 phiên Excel mới rồi bấm nút Open để mở file đích

---> Trường hợp này gọi là mở 2 file trong 2 section khác nhau. Và code ở file này hoàn toàn không nhận biết sự tồn tại của file kia
Vậy chỉ có cách:
- Double click để mở file nguồn
- Double click để mở file đích
- Xong, chạy code
 
Upvote 0
Sửa code thành vầy đi
Mã:
Sub ExtractData()
  On Error Resume Next
  Application.DisplayAlerts = False
  With Workbooks.Open([COLOR=red][B]ThisWorkbook.Path & "\TenBatKi.xls"[/B][/COLOR])
    ThisWorkbook.Sheets("Sheet1").Range("A4:A14").Copy .Sheets(1).Range("A4")
    .Close True
  End With
  Application.DisplayAlerts = True
End Sub
Sửa đoạn ThisWorkbook.Path & "\TenBatKi.xls" thành đường dẫn khác cho phù hợp trên máy bạn

Hi Bác

Em muốn Paste value luôn thì code này nên sửa như nào được ạ
 
Upvote 0
Nhờ các anh / chị giúp copy dữ liệu từ file này sang file khác, như đính kèm ạ.
 

File đính kèm

Upvote 0
Các anh thử đổi tên file đích: "TenBatKi" thành tên khác như: "TenBatKi2" rồi xem thử. --> Tôi thử đổi tên file đích thì không chạy được.
Vì theo công việc của tôi,file nguồn thì chỉ có 1 file nhưng file đích thì có rất nhiều, mỗi file có tên riêng nhưng các file đều có vùng cần nhập dữ liệu giống nhau hoàn toàn. Vì thế tôi mới yêu cầu file đích là có tên bất kì. Mong các anh tiếp tục giúp đỡ.

Nếu vậy thì chơi kiểu khác:

1/ Mở dialog box rồi chọn File muốn lấy dữ liệu.

2/ Lấy dữ liệu vào, có bao nhiêu sheet lấy tất.
 
Upvote 0
Web KT

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

Back
Top Bottom