Làm sao để lấy vùng dữ liệu từ 1 workbook cho vào các sheet của workbook đang đóng?? (1 người xem)

  • Thread starter Thread starter coitam
  • Ngày gửi Ngày gửi

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

coitam

Thành viên mới
Tham gia
10/8/09
Bài viết
24
Được thích
0
Các bạn giúp mình vấn đề này với,
Làm sao để lấy dữ liệu từ 1 sheet cho vào các sheet đang đóng??
Cụ thể thế này:
Mình có 3 Work book:
Vấn đề là mình muốn lấy dữ liệu từ ô B3:B24 để đưa vào 2 workbook còn lại cũng ở vùng B3:B24
(Sao chép hẳn dữ liệu chứ không phải lấy địa chỉ liên kết, có nghĩa là 2 workbook kia chép sang máy khác vẫn thấy dữ liệu)
Mọi người giúp mình với
 

File đính kèm

Các bạn giúp mình vấn đề này với,
Làm sao để lấy dữ liệu từ 1 sheet cho vào các sheet đang đóng??
Cụ thể thế này:
Mình có 3 Work book:
Vấn đề là mình muốn lấy dữ liệu từ ô B3:B24 để đưa vào 2 workbook còn lại cũng ở vùng B3:B24
(Sao chép hẳn dữ liệu chứ không phải lấy địa chỉ liên kết, có nghĩa là 2 workbook kia chép sang máy khác vẫn thấy dữ liệu)
Mọi người giúp mình với
Đây là code bạn cần:
Mã:
Sub copy()
   Set rg = Worksheets("sheet1").Range("B3:B24")
      rg.Select
      Selection.copy
   Workbooks.Open Filename:="[B]C:\Documents and Settings\User\Desktop\Book2.xls[/B]"
   Windows("Book2").Activate
   Worksheets("sheet1").Range("B3").Select
   Selection.PasteSpecial Paste:=xlPasteValues
 
   Workbooks.Open Filename[B]:="C:\Documents and Settings\User\Desktop\Book3.xls"[/B]
   Windows("Book3").Activate
   Worksheets("sheet1").Range("B3").Select
   Selection.PasteSpecial Paste:=xlPasteValues
     Windows("Book2").Close
   Windows("Book3").Close
   Windows("Book1").Activate
   Application.CutCopyMode = False
End Sub
Để tránh lỗi bạn nên sữa lại đường dẫn ở trên (phần in đậm)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn để mình thử cái
Chờ mãi
Mình rất vui cảm ơn bạn một lần nữa
 
Upvote 0
Bạn ơi cho mình hỏi chút lỗi này là lỗi gì mình ko chạy được
loi.JPG
Với lại để thêm code này vào file của mình thì phải làm sao?
Bạn giúp mình nhé, mình mới tìm hiểu thôi, gà lắm
 
Upvote 0
Bạn ơi cho mình hỏi chút lỗi này là lỗi gì mình ko chạy được
View attachment 53325
Với lại để thêm code này vào file của mình thì phải làm sao?
Bạn giúp mình nhé, mình mới tìm hiểu thôi, gà lắm
Đó là macro đó bạn.
Ở đây mình hướng dẫn sơ lượt (với chuyên mục này - phần còn lại bạn lên google tự tìm nha)
Trước tiên bạn tạo button:
chọn form.JPG
sẽ hiện bản:
form 1.JPG
Rồi bạn tiến hành vẽ ra sheet:
Button.JPG
Lúc này sẽ hiện thêm cửa sổ Assign macro
Nếu bạn chưa viết code thì cancel đi rồi asign lại.
Tiếp theo bạn nhấn cùng lúc Alt+ F11 sẽ hiện bản code:
VB code.JPG
Insert module:
Module.JPG
Tiếp theo mở module lên rồi copy code trên vào:
Sau đó vào sheet nơi bạn tạo button, bạn click chuột phải chọn Assign macro
Assign macro.JPG
bạn chọn sub copy mình vừa tạo.
Rồi tiến hanh chạy.
thân chào
 
Upvote 0
Mình làm được rồi, nhưng vẫn lỗi đó bạn àh, giờ làm sao đây??
 
Upvote 0
Mình làm được rồi, nhưng vẫn lỗi đó bạn àh, giờ làm sao đây??
Minh test rồi không có lỗi đâu.
Bạn lưu ý xem đường dẫn ở trên có sữa chưa mình đã hướng dẫn rõ ở trên rồi.
Nếu bạn không đổi đường dẫn (file Book2 và book3) theo máy bạn thì làm sao mà mở.
thân chào
 
Upvote 0
Đó là macro đó bạn.
Ở đây mình hướng dẫn sơ lượt (với chuyên mục này - phần còn lại bạn lên google tự tìm nha)
Trước tiên bạn tạo button:
View attachment 53374
sẽ hiện bản:
View attachment 53375
Rồi bạn tiến hành vẽ ra sheet:
View attachment 53377
Lúc này sẽ hiện thêm cửa sổ Assign macro
Nếu bạn chưa viết code thì cancel đi rồi asign lại.
Tiếp theo bạn nhấn cùng lúc Alt+ F11 sẽ hiện bản code:
View attachment 53378
Insert module:
View attachment 53379
Tiếp theo mở module lên rồi copy code trên vào:
Sau đó vào sheet nơi bạn tạo button, bạn click chuột phải chọn Assign macro
View attachment 53388
bạn chọn sub copy mình vừa tạo.
Rồi tiến hanh chạy.
thân chào
Với những dạng lấy dữ liệu này thì ngoài cách trên cũng có thể dùng ADO.
Lưu ý nên khái thêm
Dim myPath as string, wName as string
myPath=ThíWorkBook.Path
wName="....xls"
wName=myPath &"\" &wName
...
và cũng nên khai thêm shName (tên sh mà muốn lấy)...
Đại loại như vậy thì các file chép vào folder nào nó cũng tự tìm path.
 
Upvote 0
Mình đã đổi đường dẫn rồi mình lưu 3 file ở desktop, uẻ máy mình đang sử dụng là welcome nên mình đổi đường dẫn thành:
C:\Documents and Settings\welcome\Desktop\Book2.xls
C:\Documents and Settings\welcome\Desktop\Book3xls
Vậy đúng ko bạn
Mình up hình màn hình mình luôn nha
Bạn xem lại hộ mình
HINH LOI.JPG
 
Upvote 0
Với những dạng lấy dữ liệu này thì ngoài cách trên cũng có thể dùng ADO.
Lưu ý nên khái thêm

và cũng nên khai thêm shName (tên sh mà muốn lấy)...
Đại loại như vậy thì các file chép vào folder nào nó cũng tự tìm path.

Dòng code này khai thêm vào chỗ nảo bạn?? cái này cái bộ hay àh nha,
 
Upvote 0
Dòng code này khai thêm vào chỗ nảo bạn?? cái này cái bộ hay àh nha,
Làm thử xem, nhớ là 3 file phải chung 1 folder, còn không phải chỉ định rõ folder và path của book2, 3
PHP:
Sub copyGPE()
Dim Arr()
Dim myPath As String, wbName As String
Dim TgtWb As Workbook
With Sheets("sheet1")
  Arr = .Range("B3:B24").Value
End With
myPath = ThisWorkbook.Path
'Book2'
wbName = "Book2.xls"
wbName = myPath & "\" & wbName
Workbooks.Open Filename:=wbName
Set TgtWb = ActiveWorkbook
TgtWb.Activate
Sheets("sheet1").Select
Range("B3:B24").Value = Arr
TgtWb.Save
TgtWb.Close

'Book2'
wbName = "Book3.xls"
wbName = myPath & "\" & wbName
Workbooks.Open Filename:=wbName
Set TgtWb = ActiveWorkbook
TgtWb.Activate
Sheets("sheet1").Select
Range("B3:B24").Value = Arr
TgtWb.Save
TgtWb.Close

End Sub
 

File đính kèm

Upvote 0
Bạn thunghi nói rõ hơn về trường hợp không trùng folder hay ổ đĩa nha. Mình muốn hiểu rõ hơn về vấn đề này.
Ví dụ như file book1 (file chính) ở C:\Users\Owner\Desktop và file book2 ở D:/
thanks
 
Upvote 0
Bạn thunghi nói rõ hơn về trường hợp không trùng folder hay ổ đĩa nha. Mình muốn hiểu rõ hơn về vấn đề này.
Ví dụ như file book1 (file chính) ở C:\Users\Owner\Desktop và file book2 ở D:/
thanks
Lúc ấy mình sẽ khai thêm biến myPath. hay cũng có thể lấy myPath từ những danh sách có sẵn.
Và cũng có thể mở folder như là mở explore và cho chọn file theo folder nào.
Nói chung nhiều cách. Theo tôi nên đưa về 1 folder, sau đó muốn move đi đâu thì làm tiếp.
 
Upvote 0
Cụ thể là code như thế nào vậy
bạn có thể viết code cho mình tham khảo với.
thanks
 
Upvote 0
Cảm ơn các bạn nhiều code quá hay

Code này nếu muốn cho nó tự phát hiện ra các File trong thư mục đó thì phải sửa thế nào đây bạn (Nghĩa là không nhất thiết tên phải là "Book2" hay "book3" mà là tên khác tùy ý).
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Code này nếu muốn cho nó tự phát hiện ra các File trong thư mục đó thì phải sửa thế nào đây bạn (Nghĩa là không nhất thiết tên phải là "Book2" hay "book3" mà là tên khác tùy ý).
Giả định rằng bạn chỉ duyệt các file XLS và chỉ dò các file có trong thư mục, không dò thêm các file có trong thư mục con... Vậy thì tặng bạn hàm này:
PHP:
Function FileNameList(FolPath As String)
  On Error Resume Next
  FolPath = FolPath & "\"
  ActiveWorkbook.Names.Add "Arr", "=""" & FolPath & """&Files(""" & FolPath & "*.xls"")"
  FileNameList = Evaluate("Arr")
  ActiveWorkbook.Names("Arr").Delete
End Function
Hàm này trả về 1 mảng với các phần tử là đường dẩn của tất cả các file có trong thư mục (cấp 1) ---> Việc của bạn là xây dựng 1 vòng lập, duyệt qua các phần tử của mảng này và thế vào code của ThuNghi
Giới hạn của hàm này là: Duyệt tối đa 256 files (nhưng thiết nghĩ chắc bạn chẳng cần nhiều đến thế?)
 
Lần chỉnh sửa cuối:
Upvote 0
Function FileNameList(FolPath As String)
On Error Resume Next
FolPath
= FolPath &
"\"
ActiveWorkbook.Names.Add "
Arr", "=""" & FolPath & """&Files(""" & FolPath & "*.xls"")
"
FileNameList = Evaluate("
Arr
")
ActiveWorkbook.Names("
Arr
").Delete
End Function


Bạn cho hỏi thêm phải thế cái này như thế nào trong code của ThuNghi? Bạn thông cảm mình không phải là người chờ ăn sẵn nhưng thực tình mình mới tìm hiểu về code thôi nên ko biết, bạn giúp mình nhé
 
Upvote 0
Function FileNameList(FolPath As String)
On Error Resume Next
FolPath
= FolPath &
"\"
ActiveWorkbook.Names.Add "
Arr", "=""" & FolPath & """&Files(""" & FolPath & "*.xls"")
"
FileNameList = Evaluate("
Arr
")
ActiveWorkbook.Names("
Arr
").Delete
End Function


Bạn cho hỏi thêm phải thế cái này như thế nào trong code của ThuNghi? Bạn thông cảm mình không phải là người chờ ăn sẵn nhưng thực tình mình mới tìm hiểu về code thôi nên ko biết, bạn giúp mình nhé
Tôi sẽ sửa thế này:
PHP:
Sub copyGPE()
  Dim FileList, Fle, Arr()
  Application.ScreenUpdating = False
  Arr = Sheets("sheet1").Range("B3:B24").Value
  FileList = FileNameList(ThisWorkbook.Path & "\GPE")
  For Each Fle In FileList
    With Workbooks.Open(CStr(Fle))
      .Sheets("sheet1").Range("B3:B24").Value = Arr
      .Close (True)
    End With
  Next
  Application.ScreenUpdating = True
End Sub
Đại khái thế
Lưu ý dòng: FileList = FileNameList(ThisWorkbook.Path & "\GPE") ---> Nó chỉ đến đường dẩn chứa các file con... Trên máy bạn nếu khác hơn phải sửa lại chổ này nhé
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Chào các bác, chủ để này có vẻ như close lấu lắm rồi, nhưng mà hiện nay nó đang còn rất mới đối với em. :) Tuân thủ yêu cầu tìm kiếm trước khi hỏi nhé --=0
Câu hỏi của chủ đề này là chỉ chọn 1 lần, 1 nhóm ra 1 chỗ khác. Còn em muốn chuyển nhiều nhóm trong 1 data workbook sang từng workbook riêng ạ. Vấn đề của em cũng gần giống với câu hỏi của chủ đề này. Nhưng em xin hướng dẫn 1 số thắc mắc sau:
Giả sử trong danh sách em có 100 học sinh, em muốn chia ra 5 nhóm:
Phương án 1: chọn lần lượt 20 bạn theo thứ tự. Lưu vào 1 workbook hoặc sheet khác. Mỗi nhóm lưu vào 1 workbook hoặc sheet riêng.
Phương án 2: chọn ngẫu nhiên 20 bạn, không lặp lại (tức là chọn ngẫu nhiên vào nhóm 1 xong rồi thì bỏ luôn, nhóm 2 sẽ chọn ngẫu nhiên số còn lại -> là CUT Paste chứ không phải COPY Paste)
Phương án 3: chọn ngẫu nhiên 20 bạn, copy vào 1 workbook khác. Lần 2 tiếp tục chọn ngẫu nhiên 20 bạn (có thể lặp lại). Cách này thì có thể chọn quá 5 lần vì cho phép lặp lại.
Xin các bác chỉ dẫn cho 1 cách cũng được, hoặc cả 3 cách thì càng tốt ạ. %#^#$ Vì thực sự nếu chỉ có 100 học sinh còn làm thủ công, copy hoặc cut paste được, chứ có khoảng 1000 chú thì bó tay ạ +-+-+-+
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom