Chạy macro sau khi đóng file (1 người xem)

  • Thread starter Thread starter manhdan
  • Ngày gửi Ngày gửi
Liên hệ QC

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

manhdan

Thành viên mới
Tham gia
17/8/07
Bài viết
21
Được thích
3
Em đang làm việc với 1 file, trong đó code sẽ:

B1. Xử lý dữ liệu, copy Sheet1 và lưu lại thành file mới.
B2. Đóng file gốc.
B3. Quay sang file mới xử lý tiếp.

Tuy nhiên vì code nằm trên file gốc nên xong bước 2 vba sẽ dừng và không thể chạy tiếp bước 3.

Em tính chuyển code B2, B3 vào file mới rồi chạy hết B1 thì gọi code từ file mới, tuy nhiên khi copy Sheet1 thì nó lại không mang theo code trong Modules. Vậy có giải pháp gì không ạ?

Cảm ơn các anh chị.
 
@manhdan
B3. Ở file mới xử lý tiếp là xử lý cái gì?
Sao không xử lý sạch sành sanh rồi tới B2?
 
Upvote 0
Em đang làm việc với 1 file, trong đó code sẽ:

B1. Xử lý dữ liệu, copy Sheet1 và lưu lại thành file mới.
B2. Đóng file gốc.
B3. Quay sang file mới xử lý tiếp.

Tuy nhiên vì code nằm trên file gốc nên xong bước 2 vba sẽ dừng và không thể chạy tiếp bước 3.

Em tính chuyển code B2, B3 vào file mới rồi chạy hết B1 thì gọi code từ file mới, tuy nhiên khi copy Sheet1 thì nó lại không mang theo code trong Modules. Vậy có giải pháp gì không ạ?

Cảm ơn các anh chị.
Để copy module sang wb mới thì bạn tham khảo mục "Copy A Module From One Project To Another"

http://www.cpearson.com/Excel/vbe.aspx
 
Upvote 0
Nhiều khi muốn làm việc khác anh ah, ví dụ ghi đè lên file gốc chẳng hạn. Hoặc trong trường hợp của em là muốn con trỏ ở vị trí dòng cuối cùng đang nhập, nhưng sau khi đóng file cũ con trỏ lúc nào cũng nhảy về dòng đầu tiên (mặc dù trước đó đã set vị trí trỏ ở ô F2501):
PHP:
Range("F2501").Select
Windows("CheckTG 1.9.xlsm").Activate
ActiveWindow.Close False
Sheets("CheckTG").Select
 
Upvote 0
Để copy module sang wb mới thì bạn tham khảo mục "Copy A Module From One Project To Another"

http://www.cpearson.com/Excel/vbe.aspx

Cho em hỏi em có đặt code trong Sheet1, khi copy sang em thấy có mang theo code này. Vậy có thể chạy code này từ file gốc được không? Em có thử đoạn code dưới nhưng ko chạy được, có lẽ do code nằm trong Sheet chứ ko nằm trong Modules:
PHP:
Application.Run ("'NewFile.xlsm'!Buoc3")

Bài copy module em đang đọc nhưng có vẻ phức tạp, vì mới chập chững vba nên nhiều cái trong bài em chưa hiểu hết được -+*/
 
Upvote 0
Cho em hỏi em có đặt code trong Sheet1, khi copy sang em thấy có mang theo code này. Vậy có thể chạy code này từ file gốc được không? Em có thử đoạn code dưới nhưng ko chạy được, có lẽ do code nằm trong Sheet chứ ko nằm trong Modules:
PHP:
Application.Run ("'NewFile.xlsm'!Buoc3")

Bài copy module em đang đọc nhưng có vẻ phức tạp, vì mới chập chững vba nên nhiều cái trong bài em chưa hiểu hết được -+*/
Ko hiểu bạn muốn làm gì, nếu muốn mở 1 file thì bạn có thể dùng workbooks.Open.
Noí chung là bạn cứ nêu vấn đề cụ thể của bạn làm gì, ko làm đc kiểu này ta có thể tìm đường khác.
 
Upvote 0
Em muốn mở 1 file, copy sheet1 thành file mới. Sau đó vẫn chạy được macro trên file mới mặc dù đã đóng file cũ anh ah.
 
Upvote 0
Không biết bác cần chạy code gì.
Bác tham khảo file đính kèm xem có áp dụng được gì không.

Cảm ơn bạn, ý mình là giải pháp để code vẫn chạy được sau khi đã đóng file gốc. Như file của bạn thì code sẽ dừng sau khi có lệnh thisbook.Close False, các dòng sau dòng này sẽ không hoạt động %#^#$

Vd chuyển đoạn 'Your code xuống dưới thì đoạn này sẽ không chạy được:
PHP:
thisbook.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
' Your code:
With ActiveWorkbook
    .Sheets(1).Range("A1").Value = "Hello!"
    .Sheets(1).Range("A10").Select
End With

Như vậy là:
+ Nếu đóng file chứa code đang chạy, chắc chắn code sẽ dừng lại?
+ Nếu như trên thì chỉ còn cách tạo (hoặc copy) module lên file mới, chạy code trên file mới rồi mới đóng file cũ. Giải pháp copy module lên file mới anh @quanluu1989 có giới thiệu nhưng mình đọc chưa hiểu và làm được **~**
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn, ý mình là giải pháp để code vẫn chạy được sau khi đã đóng file gốc. Như file của bạn thì code sẽ dừng sau khi có lệnh thisbook.Close False, các dòng sau dòng này sẽ không hoạt động %#^#$
Thì đúng rồi. Quá chuẩn! --=0
Vì thế mới cho nó chạy xong trước khi đóng file. Bác xem lại bài #2.
 
Upvote 0
Nếu lúc nào cũng phải xử lý xong hết rồi mới được đóng file gốc thì mình thấy "hơi tù". Mình nghĩ nhiều cao thủ gpe xử lý được cái này chứ nhỉ --=0
 
Upvote 0
Web KT

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

Back
Top Bottom