Chọn mở từng file excel trong một folder bằng vba (1 người xem)

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

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

luatle

Thành viên mới
Tham gia
10/3/09
Bài viết
10
Được thích
0
Chào các anh chị,
Mình đang có vấn đề này nhờ anh chị trên diễn đàn giúp đỡ giùm mình. Số là mình có 1 folder có khoảng 10 cái file excel, nhưng do công việc của mình chỉ cần lấy dữ liệu của 4-6 file excel trong folder đó (thứ tự các file này không liên tiếp, ví dụ 1,4,7,8,10 chẳng hạn). Mình đang cần một mã code vba để chỉ chọn mở các file này, đại loại giống như chọn File --> Open trong Excel vậy.
Đại khái như code của bác ndu96081631 mở nhiều file .txt bằng excel vậy (http://www.giaiphapexcel.com/forum/...ập-tự-động-dữ-liệu-từ-file-notepad-sang-Excel)
Mình đã tìm trên diễn đàn nhưng hầu như chỉ có các code để mở tất cả các file trong 1 folder thôi. Hi vọng anh chị ở diễn đàn sẽ giúp đỡ mình. Rất cảm ơn mọi người.
 
Chào các anh chị,
Mình đang có vấn đề này nhờ anh chị trên diễn đàn giúp đỡ giùm mình. Số là mình có 1 folder có khoảng 10 cái file excel, nhưng do công việc của mình chỉ cần lấy dữ liệu của 4-6 file excel trong folder đó (thứ tự các file này không liên tiếp, ví dụ 1,4,7,8,10 chẳng hạn). Mình đang cần một mã code vba để chỉ chọn mở các file này, đại loại giống như chọn File --> Open trong Excel vậy.
Đại khái như code của bác ndu96081631 mở nhiều file .txt bằng excel vậy (http://www.giaiphapexcel.com/forum/showthread.php?79982-Nh%E1%BA%ADp-t%E1%BB%B1-%C4%91%E1%BB%99ng-d%E1%BB%AF-li%E1%BB%87u-t%E1%BB%AB-file-notepad-sang-Excel)
Mình đã tìm trên diễn đàn nhưng hầu như chỉ có các code để mở tất cả các file trong 1 folder thôi. Hi vọng anh chị ở diễn đàn sẽ giúp đỡ mình. Rất cảm ơn mọi người.

Mục đích mở nhiều file để làm gì?
- Nếu mở file chỉ để xem và thao tác gì đó thì khỏi cần code gì cả... Cứ mở cửa sổ Windows Explorer lên, duyệt đến thư mục rồi dùng chuột chọn file đầu, bấm giữ Ctrl rồi dùng chuột chọn tiếp các file khác tùy ý. Xong, click phải chuột rồi Open thôi
- Nếu mở file để lấy dữ liệu thì lại là chuyện khác. Trường hợp này bạn phải cho file lên đây mới biết sẽ làm những gì
 
Upvote 0
Cảm ơn anh ndu96081631 đã trả lời. Mục đích mở nhiều file của mình là để lấy dữ liệu.
Dữ liệu mình bao gồm như sau:
- 1 folder tổng tên là Solieu gồm các folder con như: 24May, 28May.....
- Trong mỗi folder con có các file excel với định dạng cho sẵn. Ví dụ: 897970 #809019 (1.1) May-24.xls

+ 897970, 897972... là kí hiệu sản phẩm
+ 809019, 809060... là kí hiệu lô sản phẩm
+ 1.1, 1.2, 2.1, 3.2.... là kết quả test lần 1 cho nhiều SERIAL với các lần khác nhau cho cùng lô sản phẩm 809019 (số trước dấu chấm có giá trị tối đa là 3, số sau dấu chấm có giá trị tối đa là 5).
+ 1.10, 2.10, 3.10.... là kết quả test lần 2 cho các sản phẩm fail lần 1 cho cùng lô sản phẩm 809019 (Test lần 2 đặc trưng bởi số 10)
+ 1.1R, 1.2R, 2.3R.... là kết quả test lần 3 cho các sản phẩm fail lần 2 cho cùng lô sản phẩm 809019 (Test lần 3 đặc trưng bởi chữ R).
+ May-24, May-28, May-30... là ngày test kết quả.
- Trong mỗi file excel có kết quả kiểm tra pass (ki hieu P) và fail (ki hieu F).
Yêu cầu:
Cần thống kê dữ liệu cho lô 809019. Dữ liệu các file liên quan sẽ được copy qua file "So lieu thong ke.xls" cho các file có thông tin 809019, trong đó:
- Kết quả test lần 1 sẽ copy các kết quả fail từ các file có dạng 1.1, 1.2 (gồm "897970 #809019 (1.1) May-24.xls" và "897970 #809019 (1.2) May-24.xls" trong folder "24May" và "897970 #809019 (1.1) May-28.xls" trong folder "28May")
- Kết quả test lần 2 sẽ copy tất cả các kết quả fail và pass của các SERIAL fail lần 1 từ file có dạng 1.10 ("897970 #809019 (1.10) May-24.xls" và "897970 #809019 (2.10) May-28.xls")
- Kết quả test lần 3 sẽ copy tất cả các kết quả fail và pass của các SERIAL fail lần 1 từ gile có dạng 1.2R ("897970 #809019 (1.2R) May-28.xls")
- Làm tương tự cho các lô 809060 và 809140. Mỗi lô sẽ được lưu trong 1 sheet trong file "So lieu thong ke.xls".

Bởi vì các file này có thể nằm rải rác ở các folder khác nhau nên làm thủ công rất tốn thời gian phải dò tìm các các SERIAL đang nằm ở file excel nào, trong folder nào. Bây giờ mình muốn viết chương trình VB làm việc đó.
Xin lỗi vì mình trình bày hơi dông dài và có vẻ hơi phức tạp. Mình biết đây là bài toán khó nên rất mong các anh chị trên diễn đàn giúp cho, vì nếu làm được mình sẽ tiết kiệm được rất nhiều thời gian và công sức.
Thành thật cảm ơn!%#^#$
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 1
Cảm ơn bà con, ơn trời mình đã làm được rồi. Thanks
 
Upvote 0
Tôi đang cần cái này bạn có thể up lên cho tôi tham khảo được không?
 
Upvote 0
Tôi đang cần cái này bạn có thể up lên cho tôi tham khảo được không?
Bạn nên đưa dữ liệu của mình lên đây để mọi người giúp cho chứ đoạn code mình viết phục vụ cho nhu cầu tính toán của mình nên khá dài, mình không thể đưa hết lên diễn đàn được. Mình chỉ cung cấp cho bạn ý tưởng để bạn tham khảo nha!
(Lưu ý: Bước 1 và 2 bạn có thể tham khảo bài của sealand ở đường dẫn http://www.giaiphapexcel.com/forum/archive/index.php/t-17212.html)
Bước 1: Đầu tiên bạn phải viết sub để liệt kê số lượng folder con trong Path chỉ định của bạn --> Bạn cần liệt kê tên folder và số lượng folder con trong Path chỉ định của bạn.

Bước 2: Sub tiếp theo sẽ mở từng folder con và liệt kê tên file excel và số lượng file excel trong từng folder ấy

Bước 3: Bây giờ bạn đã có tên folder, số lượng folder, tên file, số lượng file. Việc của bạn bây giờ tạo một đường link và xây dựng vòng lặp để VBA mở từng file trong vòng lặp ấy và thực hiện công việc tính toán của bạn.
Lưu ý: Code của sealand thì tên folder, tên file excel là biến dạng mảng nên để đọc từng folder, từng file bạn phải cắt mảng ra bằng hàm Split. Ví dụ:
ten_folder = Split(s, ",")
so_folder = UBound(ten_folder)
ten_file = Split(s1, ",")
soluong_file = UBound(ten_file)
Có vấn đề gì rắc rối thì liên hệ với mình. Chúc bạn thành công!
 
Upvote 0
Cảm ơn bà con, ơn trời mình đã làm được rồi. Thanks
Hi anh, anh có thể up file anh đã viết code lên đây được không ạ? Em mới vào làm việc ở bộ phận suply chain của một công ty hóa chất, và công việc báo cáo cũng tương tự như anh vậy. Khổ nỗi em không biết VBA nên chỉ có thể mò mẫm từ những code của người khác thôi ạ. Em cám ơn anh /-*+/
 
Upvote 0

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

Back
Top Bottom