file xlsm đã đóng nhưng trong cửa sổ VBAProject vẫn tồn tại Project của nó?

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

mrfeed87

Thành viên mới
Tham gia
5/11/21
Bài viết
26
Được thích
14
Giới tính
Nam
Xin chào các Bác
Tôi có 1 vấn đề này muốn nhờ các Bác trợ giúp
- File excel xlsm của tôi dù đóng file nhưng trong cửa sổ VBAProject vẫn tồn tại Project của file đó
- Mỗi lần mở 1 File mới lại thêm 1 Project mới của File mới mở
(Tôi mở 1 file 2 lần thì tồn tại 2 lần Project cùng 1 File)
- Tắt hết toàn bộ excel thì mới hết Project
-> Khó nhìn để chỉnh sửa hoặc sử dụng và khi tôi dùng code để tham chiếu đoạn code từ 1 File khác sẽ bị lỗi do tồn tại 2 Project cùng tên
Tôi đã tra cứu nhưng không thấy giải pháp
cũng đã cài lại excel nhưng vẫn bị
Rất cám ơn sự trợ giúp của mọi người
Bài đã được tự động gộp:

Tôi đã tham khảo bài viết này, nhưng không thấy kết quả
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    36.6 KB · Đọc: 21
Dùng Excel bản quyền chuẩn là hết bệnh á.
Anh ơi. Công ty cũng sài bản quyền. Mà vẫn bị. Thực ra nó không ảnh hưởng lắm nhưng nhìn nó khó chịu. Em cũng bị mấy tháng nay rồi. Nhưng kệ. Nếu có cách khắc phục thì càng tốt
 
Upvote 0
Để nguyên thì nó không ảnh hưởng chỉ khó nhìn thôi
Nhưng do tôi chạy code từ File excel khác nên bị lỗi do Project có 2 File trùng tên nên chạy bị lỗi
 
Upvote 0
Tôi cũng mới bị đây. Sau đó dùng cách thủ công để xoá nó như sau: application.Workbooks.count. Sau đó duyệt qua từng wb để đóng (close).
Sau khi sửa code file xlsm bị lỗi thì hết.
 
Upvote 0
Tôi cũng mới bị đây. Sau đó dùng cách thủ công để xoá nó như sau: application.Workbooks.count. Sau đó duyệt qua từng wb để đóng (close).
Sau khi sửa code file xlsm bị lỗi thì hết.
Tôi đã dùng code để xoá thủ công như nó vẫn còn Bác à
Sub DongTatCaWorkbook()
Dim wb As Workbook
For Each wb In Workbooks
If wb Is ThisWorkbook Then Exit Sub
wb.Close SaveChanges:=False
Next wb
End Sub
 

File đính kèm

  • Capture.JPG
    Capture.JPG
    28.5 KB · Đọc: 8
Upvote 0
Nguyên nhân có thể ứng dụng excel vẫn còn đang chạy trong memory chưa được giải phóng hoàn toàn như addin comaddin vẫn còn đang chạy ẩn hoặc virut!
 
Upvote 0
Nếu bạn muốn xóa được các node trong TreeView ảo đó, chỉ có thể sử dụng các hàm API để làm điều đó. Cửa sổ Project Explorer được vẽ với lớp cửa sổ SysTreeView32 trong thư viện comctl. Dựa vào đó tìm và xóa các Node.

Cái này là lỗi thông dịch của trình soạn thảo VBA, khi VBIDE đang thực thi các lệnh dọn dẹp, giải phóng cho dự án trước khi thoát thì xảy ra sự số, có các component đã thông dịch nhưng không thể giải phóng.
Các Project còn xuất hiện ở lại thực chất là các Node TreeView vô dụng. Duyệt qua các VBProjects, thì còn tồn tại project đã thoát, nhưng duyệt qua các Workbooks thì lại không. Nếu cố gắng mở các Component trong dự án, thì sẽ gặp sự cố thông dịch thực sự là sập ứng dụng, vì trình thông dịch không tìm thấy các đoạn mã trong Memory của dự án đã thoát.

Nếu muốn lập trình gọi từ dự án này qua dự án khác thì cũng chỉ API mới có thể bỗ trợ tốt cho điều này.
 
Upvote 0
Nếu bạn muốn xóa được các node trong TreeView ảo đó, chỉ có thể sử dụng các hàm API để làm điều đó. Cửa sổ Project Explorer được vẽ với lớp cửa sổ SysTreeView32 trong thư viện comctl. Dựa vào đó tìm và xóa các Node.

Cái này là lỗi thông dịch của trình soạn thảo VBA, khi VBIDE đang thực thi các lệnh dọn dẹp, giải phóng cho dự án trước khi thoát thì xảy ra sự số, có các component đã thông dịch nhưng không thể giải phóng.
Các Project còn xuất hiện ở lại thực chất là các Node TreeView vô dụng. Duyệt qua các VBProjects, thì còn tồn tại project đã thoát, nhưng duyệt qua các Workbooks thì lại không. Nếu cố gắng mở các Component trong dự án, thì sẽ gặp sự cố thông dịch thực sự là sập ứng dụng, vì trình thông dịch không tìm thấy các đoạn mã trong Memory của dự án đã thoát.

Nếu muốn lập trình gọi từ dự án này qua dự án khác thì cũng chỉ API mới có thể bỗ trợ tốt cho điều này.
Bác có thể hướng dẫn thêm không
Cám ơn Bác
 
Upvote 0
@mrfeed87 sau khi thử đoạn mã để vào TreeView, tuy nhiên bị chặn thực thi.

Vấn đề này hiện khó giải quyết, nó là chuyện thường của Microsoft, vì trình thông dịch VBA cũng chứa vài lỗi nghiêm trọng.

Có 3 lỗi mà tôi biết, 1. là gõ dấu chấm (.) trong khối With - End With, 2. Lỗi truy cập item của Collection bị xung đột trong bộ nhớ, 3 là lỗi thông dịch ProcTimer API trên VBA 64 bit. Tất cả lỗi này đều dẫn đến sập ứng dụng.

Để lập trình gọi từ dự án này qua dự án khác, bạn tham khảo dự án BackupAndRestoreXL của tôi.
Trong mã sử dụng API đăng ký đối tượng đang hoạt động cho lớp. Bạn có thể tìm thấy tại module A_APIStartProcessStandAlone
 
Upvote 0
Tôi đã dùng code để xoá thủ công như nó vẫn còn Bác à
Sub DongTatCaWorkbook()
Dim wb As Workbook
For Each wb In Workbooks
If wb Is ThisWorkbook Then Exit Sub
wb.Close SaveChanges:=False
Next wb
End Sub
Muốn test nhanh xem có đóng được không thì bạn gõ lệnh ngay trong cửa sổ Immediate là thấy liền.
Screen Shot 2024-08-23 at 20.12.05.png

Còn muốn dùng code thì sửa code trên như bên dưới:

JavaScript:
Sub DongTatCaWorkbook()
    Dim wb As Workbook
    For Each wb In Workbooks
        If wb Is ThisWorkbook Then GoTo skip
        wb.Close SaveChanges:=False
skip:
    Next wb
End Sub
 
Upvote 0
Vào cài đặt của win 11, tìm Reset PC, làm theo hướng dẫn tiếp theo.
Cách này có phải là cài lại Win thủ công không Bác
Bài đã được tự động gộp:

Muốn test nhanh xem có đóng được không thì bạn gõ lệnh ngay trong cửa sổ Immediate là thấy liền.
View attachment 303374

Còn muốn dùng code thì sửa code trên như bên dưới:

JavaScript:
Sub DongTatCaWorkbook()
    Dim wb As Workbook
    For Each wb In Workbooks
        If wb Is ThisWorkbook Then GoTo skip
        wb.Close SaveChanges:=False
skip:
    Next wb
End Sub
Tôi đã thử nhưng vãn còn Bác à
Bài đã được tự động gộp:

@mrfeed87 sau khi thử đoạn mã để vào TreeView, tuy nhiên bị chặn thực thi.

Vấn đề này hiện khó giải quyết, nó là chuyện thường của Microsoft, vì trình thông dịch VBA cũng chứa vài lỗi nghiêm trọng.

Có 3 lỗi mà tôi biết, 1. là gõ dấu chấm (.) trong khối With - End With, 2. Lỗi truy cập item của Collection bị xung đột trong bộ nhớ, 3 là lỗi thông dịch ProcTimer API trên VBA 64 bit. Tất cả lỗi này đều dẫn đến sập ứng dụng.

Để lập trình gọi từ dự án này qua dự án khác, bạn tham khảo dự án BackupAndRestoreXL của tôi.
Trong mã sử dụng API đăng ký đối tượng đang hoạt động cho lớp. Bạn có thể tìm thấy tại module A_APIStartProcessStandAlone
Trong 3 lỗi thì tôi có sử dụng With - End With
Nếu không dùng . thì không sử dụng đúng cách
Lỗi 2 thì tôi không dùng
Lỗi 3 thì tôi không biết
Vậy không nên dùng With - End With đúng không Bác
- nhưng cũng đoạn mã code của tôi với File của tôi dùng cho máy đời Excel thấp hơn lại không bị lỗi trên
Mong Bác tư vẫn thêm
 
Upvote 0
Đơn giản là đóng hết excel, mở lại file cần thiết thôi rồi tha hồ mần tiếp. Bớt đau đầu.
 
Upvote 0
Web KT

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

Back
Top Bottom