Làm việc "ngầm" với file trong thư mục. (1 người xem)

Liên hệ QC

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

TrungChinhs

Thành viên tích cực
Tham gia
18/2/08
Bài viết
1,475
Được thích
2,470
Nghề nghiệp
Công chức
Làm việc "ngầm" với các file trong thư mục là phương pháp dùng VBA để thực hiện 1 hoặc nhiều công việc giống nhau như: chuyển mã font, tính toán, định dạng, in ấn... với tất cả những file có trong cùng thư mục con hoặc thực hiện các công việc phức tạp hơn như: Tổng hợp dữ liệu, gộp file, tách file, xóa file, tạo file mới ... mà không cần phải mở từng file ra để thực hiện như vẫn thường làm.

Khi thực hiện các công việc như tính toán, kẻ bảng... với nhiều file trong thư mục con thì các file này phải có cùng cấu trúc bảng (kiểu bố trí dữ liệu theo dòng, cột ở các file phải giống nhau). Nếu cấu trúc bảng khác nhau thì code xử lý phức tạp hơn dẫn đến tốc độ làm việc chậm hơn.

Nguyên lý làm việc của phương pháp này là sử dụng 1 file chủ để thực hiện các nhiệm vụ:
- Chứa các Module mã lệnh (code): mở file - thực hiện những công việc yêu cầu - đóng file.
- Lấy đường dẫn của thư mục con (lấy đường dẫn cho code hoặc lấy đường dẫn lên bảng tính).
- Chạy code (dùng nút, phím, hoặc chuột...).
Khi chạy code máy sẽ thực hiện các bước: Mở file - Thực hiện những công việc yêu cầu - Đóng file.
Do những công việc này không hiện lên màn hình (không nhìn thấy) nên gọi là làm việc "ngầm".

Các bạn nghiên cứu qua file ví dụ đính kèm.
Cách làm như sau:
- Tải file về máy, mở Book1, Book2, Book3 để kiểm tra dữ liệu nguồn đang là font .Vn rồi đóng tất cả lại.
- Mở File chủ và nhấn nút chạy lệnh.
- Kiểm tra kết quả: mở Book1, Book2, Book3 để kiểm tra xem dữ liệu đã chuyển sang font Unicode ?
 

File đính kèm

Lần chỉnh sửa cuối:
dùng code file A điều khiển code file B chạy

Mình đang làm một chương trình nhỏ đọc riết trên GPE xem có đề tài nào tương tự không để học thấy bài "làm việc ngầm với file trong thư mục" có nét tượng tự vì vậy mình xin gửi bài tại đây:
Với mong muốn sẽ tự động hóa ở nhiều cung đoạn mình mô tả như sau:
** Mình sử dụng ADO từ File chương trình ghi dữ liệu vào file data khi nào muốn lấy dữ liệu đã xử lý rồi lên thì phải làm thủ công là mở file data lên cho nó sử lý xong đóng lại rồi mới lấy dữ liệu ở sheet xuất nhập tồn lên được
Vậy nhờ Xử lý

** từ file chương trình khi mình khi mình thực hiện ghi dữ liệu vào file data (bằng ADO) Xong thì code ở file data bắt đầu từ Sub Loc_DataBan() Chạy => lOCDUYNHAT() chay => Sub CONG_NHAP() chạy... Các code lần lượt chạy ở trạng thái file đang đóng ( hoặc mở lên chạy xong rồi đóng lại luôn cũng được) . để khi nào mình cần thì dùng ADO lấy dữ liệu ở sheet xuất_nhập_tồn lên đã được xử lý.
* Nếu được như vậy thì mình không phải làm thêm động tác mở file data lên rồi lại đóng lại nữa

**trong file mình đang thử làm ghi dữ liệu xong thì mở file data lên luôn rồi đóng lại nhưng sao sub Auto_Open không hoạt động...!!!???
vì vậy rất mong sự trợ giúp từ các Bạn GPE
xin cảm ơn
 

File đính kèm

Upvote 0
Mình đang làm một chương trình nhỏ đọc riết trên GPE xem có đề tài nào tương tự không để học thấy bài "làm việc ngầm với file trong thư mục" có nét tượng tự vì vậy mình xin gửi bài tại đây:
Với mong muốn sẽ tự động hóa ở nhiều cung đoạn mình mô tả như sau:
** Mình sử dụng ADO từ File chương trình ghi dữ liệu vào file data khi nào muốn lấy dữ liệu đã xử lý rồi lên thì phải làm thủ công là mở file data lên cho nó sử lý xong đóng lại rồi mới lấy dữ liệu ở sheet xuất nhập tồn lên được
Vậy nhờ Xử lý

** từ file chương trình khi mình khi mình thực hiện ghi dữ liệu vào file data (bằng ADO) Xong thì code ở file data bắt đầu từ Sub Loc_DataBan() Chạy => lOCDUYNHAT() chay => Sub CONG_NHAP() chạy... Các code lần lượt chạy ở trạng thái file đang đóng ( hoặc mở lên chạy xong rồi đóng lại luôn cũng được) . để khi nào mình cần thì dùng ADO lấy dữ liệu ở sheet xuất_nhập_tồn lên đã được xử lý.
* Nếu được như vậy thì mình không phải làm thêm động tác mở file data lên rồi lại đóng lại nữa

**trong file mình đang thử làm ghi dữ liệu xong thì mở file data lên luôn rồi đóng lại nhưng sao sub Auto_Open không hoạt động...!!!???
vì vậy rất mong sự trợ giúp từ các Bạn GPE
xin cảm ơn
Muốn kiểm tra code có chạy không thì mỗi đầu code thêm dòng MsgBox "abc" sẽ biết liền. Code trong file đều chạy đầy đủ rồi mà
Sửa lại Sub này 1 chút
PHP:
Sub Open_Close_File()
    Application.ScreenUpdating = False
        Dim Openfile
        Openfile = "data.xlsb"
        Workbooks.Open ThisWorkbook.Path & "\" & Openfile
        Workbooks(Openfile).RunAutoMacros (xlAutoOpen)
        Workbooks(Openfile).Close True
    Application.ScreenUpdating = True
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Muốn kiểm tra code có chạy không thì mỗi đầu code thêm dòng MsgBox "abc" sẽ biết liền. Code trong file đều chạy đầy đủ rồi mà
Sửa lại Sub này 1 chút
PHP:
Sub Open_Close_File()
    Application.ScreenUpdating = False
        Dim Openfile
        Openfile = "data.xlsb"
        Workbooks.Open ThisWorkbook.Path & "\" & Openfile
        Workbooks(Openfile).RunAutoMacros (xlAutoOpen)
        Workbooks(Openfile).Close True
    Application.ScreenUpdating = True
End Sub

chạy Tốt Anh.vậy là mỗi ngày em học thêm được một code. cảm ơn anh nhiều
 
Upvote 0

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

Back
Top Bottom