Giả sử tôi có file A và file B.
Từ file A tôi dùng code Workbooks.Open(B) để mở file B.
Tuy nhiên trên file B có sự kiện WorkbookOpen.
Đương nhiên VBA không thể phân luồng để chạy hai thủ tục cùng một lúc. Do macro trên file A đang thực thi công việc nên sự kiện WorkbookOpen của file B cần vô hiệu hóa. Khi đó chúng ta dùng :
OK, bây giờ ta sẽ xét tới một tình huống phức tạp hơn.
Trước hết các bạn hãy xem lại topic sau :
Nếu file B sử dụng ribbon trong đó có sự kiện làm mới các nút bấm ribbon OnLoad.
Khi đó nếu file A thực thi Workbooks.Open(fileB) sẽ xảy ra lỗi 400.
Macro trên file A đang thực thi mở file B. Macro này chưa kết thúc tới End Sub .
Cùng lúc đó file B được mở và cũng muốn thực thi OnLoad.
Có sự tranh chấp này nen sẽ có cảnh báo lỗi.
Tất nhiên tôi không muốn xuất hiện thông báo như thế này.
Có vẻ người khác cũng đang gặp rắc rối tương tự nhưng chưa thấy ai bàn ra cách giải quyết.
Từ file A tôi dùng code Workbooks.Open(B) để mở file B.
Tuy nhiên trên file B có sự kiện WorkbookOpen.
Đương nhiên VBA không thể phân luồng để chạy hai thủ tục cùng một lúc. Do macro trên file A đang thực thi công việc nên sự kiện WorkbookOpen của file B cần vô hiệu hóa. Khi đó chúng ta dùng :
Mã:
Application.EnableEvents = False
Workbooks.Open (fileB)
Trước hết các bạn hãy xem lại topic sau :
Bạn cần đăng nhập để thấy link
Nếu file B sử dụng ribbon trong đó có sự kiện làm mới các nút bấm ribbon OnLoad.
Mã:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad">
Macro trên file A đang thực thi mở file B. Macro này chưa kết thúc tới End Sub .
Cùng lúc đó file B được mở và cũng muốn thực thi OnLoad.
Có sự tranh chấp này nen sẽ có cảnh báo lỗi.
Bạn cần đăng nhập để thấy đính kèm
Tất nhiên tôi không muốn xuất hiện thông báo như thế này.
Có vẻ người khác cũng đang gặp rắc rối tương tự nhưng chưa thấy ai bàn ra cách giải quyết.
Bạn cần đăng nhập để thấy link