Hỏi về ghép nhiều file excel có nhiều sheet có mật khẩu thành 1 file excel

Liên hệ QC

sondang.abt

Thành viên mới
Tham gia
2/6/11
Bài viết
14
Được thích
4
Dear các bạn/anh/chị,
Mình có một số khó khăn trong công việc muốn học hỏi kinh nghiệm của các bạn/anh/chị,
Công việc của mình yêu cầu phải tổng hợp số liệu xét nghiệm hàng tháng từ nhiều phòng khám khác nhau (khoảng 63 nơi). Biểu mẫu thu thập số liệu của 63 nơi này giống nhau, có đặt mật khẩu mở file và mật khẩu protect sheet, protect workbook.
Mình đã tìm hiểu nhiều bài viết để viết một đoạn code VBA tổng hợp dữ liệu từ nhiều file nhưng gặp phải 3 khó khăn:
1. File của mình bị đặt mật khẩu nên khi tổng hợp cứ phải đánh mật khẩu mở file (mật khẩu mở file là "123")
2. File của mình có nhiều sheet và mình chỉ muốn tổng hợp dữ liệu từ sheet "DATA" của tất cả các file, còn dữ liệu các sheet khác thì không cần
3. Mình chỉ muốn copy phần dữ liệu có trên sheet "DATA" ở vùng nhất định "A9:BO last row" mà không muốn lấy các dữ liệu khác
GPE là hy vọng cuối cùng của mình để tìm được đáp án, rất mong được mọi người giúp đỡ. Ở Hà Nội thì mình rất sẵn lòng cafe trực tiếp.
Rất mong là có anh/chị/bạn nào đó có giải pháp hoặc có code tham khảo giúp mình.
Cảm ơn mọi người rất nhiều.

p/s. Trong file đính kèm là file master để dữ liệu được tổng hợp từ PK số 1,2,3 sẽ được copy hết vào đó.
 

File đính kèm

  • 3. QUAN LY XN HIV_2020_master file.xlsm
    444 KB · Đọc: 5
  • 3. QUAN LY XN HIV_2020_PK so 1.xlsm
    445.5 KB · Đọc: 5
  • 3. QUAN LY XN HIV_2020_PK so 2.xlsm
    445.5 KB · Đọc: 5
  • 3. QUAN LY XN HIV_2020_PK so 3.xlsm
    445 KB · Đọc: 4
Mình có comment như sau:
Bạn nên tạo list các file data mà mình định tổng hợp dữ liệu. Sau đó bạn có thể biết được mình sẽ tổng hợp từ file nào vì có nếu chỉ pick các file trong cùng thư mục của file master thì có thể có lúc file bị copy và dữ liệu double.
Cách mình thường làm là:
Bấm 1 nút, pick folder. List up các file trong folder (có thể định dạng riêng xlsm).
Pick để lựa chọn các file mình định tổng hợp
Bấm nút tổng hợp.

Vậy nên có lẽ nên cho phép mở thêm 1 sheet để tạo ra cái list bên trên.
Còn sự kiện mở file có pass là: With Workbooks.Open(Filename, 0, , , "123")
 
Mình không tải file của bạn về vì không có nhiều thời gian ngâm code, nhưng mình có vài ý như này:
1. File bạn đặt mật khẩu Open, thì mở lên cho thêm cái pass vô code như bạn anhdepjai nói.
2. Chỉ lấy sheet DATA thì bạn chỉ cần chỉ thị đích danh lấy chỉ lấy dữ liệu Sheet DATA, ví dụ: Sheet("Data").Activate
3. Tương tự.
Các kiến thức này nếu bạn tìm hiểu là hoàn toàn có thể làm được. Mình gợi ý cho bạn.
1. Sử dụng ADO
2. Sử dụng sự kiện mở file khi đã ScreenUpdating = FALSE

Các kiến thức cần có bạn có thể tham khảo tại đây:
1.
ADO cho Excel
2. Sự kiện Open để lấy dữ liệu file đang đóng
 
Mình có comment như sau:
Bạn nên tạo list các file data mà mình định tổng hợp dữ liệu. Sau đó bạn có thể biết được mình sẽ tổng hợp từ file nào vì có nếu chỉ pick các file trong cùng thư mục của file master thì có thể có lúc file bị copy và dữ liệu double.
Cách mình thường làm là:
Bấm 1 nút, pick folder. List up các file trong folder (có thể định dạng riêng xlsm).
Pick để lựa chọn các file mình định tổng hợp
Bấm nút tổng hợp.

Vậy nên có lẽ nên cho phép mở thêm 1 sheet để tạo ra cái list bên trên.
Còn sự kiện mở file có pass là: With Workbooks.Open(Filename, 0, , , "123")
Mình không tải file của bạn về vì không có nhiều thời gian ngâm code, nhưng mình có vài ý như này:
1. File bạn đặt mật khẩu Open, thì mở lên cho thêm cái pass vô code như bạn anhdepjai nói.
2. Chỉ lấy sheet DATA thì bạn chỉ cần chỉ thị đích danh lấy chỉ lấy dữ liệu Sheet DATA, ví dụ: Sheet("Data").Activate
3. Tương tự.
Các kiến thức này nếu bạn tìm hiểu là hoàn toàn có thể làm được. Mình gợi ý cho bạn.
1. Sử dụng ADO
2. Sử dụng sự kiện mở file khi đã ScreenUpdating = FALSE

Các kiến thức cần có bạn có thể tham khảo tại đây:
1.
ADO cho Excel
2. Sự kiện Open để lấy dữ liệu file đang đóng

Cảm ơn bạn thukhon2014 nhiều, thật ra kiến thức về VBA của mình gần như bằng zero, mình chỉ biết copy paste mấy cái của người khác vào cái mục đích của mình muốn, nhưng thực sự chưa hiểu gì về nó cả. Mà cái task này cũng tìm nhiều rồi nhưng không có ai làm giống thế nên mình bó tay phải lên diễn đàn nhờ trợ giúp. Mình cũng muốn học nhưng background của mình về y nên mình không chuyên cái này.
Cảm ơn bạn về những gợi ý lần nữa.
Bài đã được tự động gộp:

Mình có comment như sau:
Bạn nên tạo list các file data mà mình định tổng hợp dữ liệu. Sau đó bạn có thể biết được mình sẽ tổng hợp từ file nào vì có nếu chỉ pick các file trong cùng thư mục của file master thì có thể có lúc file bị copy và dữ liệu double.
Cách mình thường làm là:
Bấm 1 nút, pick folder. List up các file trong folder (có thể định dạng riêng xlsm).
Pick để lựa chọn các file mình định tổng hợp
Bấm nút tổng hợp.

Vậy nên có lẽ nên cho phép mở thêm 1 sheet để tạo ra cái list bên trên.
Còn sự kiện mở file có pass là: With Workbooks.Open(Filename, 0, , , "123")
Cảm ơn bạn anhdepjai,
Cảm ơn góp ý của bạn.
Mình đã có một cột ghi chú file nguồn nên ko cần thêm cột nữa. Dữ liệu trùng lặp đã có phần condition format hỗ trợ. Mình đang gặp vấn đề về viết cái code để mở mấy file có khoá file, khoá sheet và copy tự động số liệu từ dòng A9 đến A cuối cùng vào file master. Bạn có thể giúp thêm ý tưởng liên quan đến vấn đề mình đang gặp phải được không?
Cảm ơn lần nữa.
Son_D.
 
Web KT
Back
Top Bottom