Một hi tất cả,Tự động hóa Excel: Đóng sự kiện thiếu
Tôi đang thực hiện tự động hóa Excel qua Interop trong C# và tôi muốn được thông báo khi sổ làm việc bị đóng. Tuy nhiên, không có sự kiện Đóng trên sổ làm việc cũng như sự kiện Thoát khỏi ứng dụng.
Có ai đã làm điều đó trước đây không? Làm cách nào để viết một đoạn mã phản ứng với sổ làm việc đang được đóng (chỉ được thực thi nếu sổ làm việc là thực sự là đã đóng)? Tốt nhất nên xảy ra sau khi đóng sổ làm việc, vì vậy tôi có thể dựa vào tệp để phản ánh tất cả thay đổi.
tin chi tiết về những gì tôi tìm thấy cho đến nay:
Có một BeforeClose() sự kiện, nhưng nếu có sự thay đổi chưa được lưu sự kiện này được nâng lên trước khi người dùng được hỏi liệu để cứu họ, vì vậy tại thời điểm này tôi có thể xử lý sự kiện, tôi không có tệp cuối cùng và tôi không thể phát hành các đối tượng COM, cả hai thứ mà tôi cần phải có/làm. Tôi thậm chí không biết liệu sổ làm việc có thực sự bị đóng hay không, vì người dùng có thể chọn hủy đóng.
Sau đó, có sự kiện BeforeSave(). Vì vậy, nếu người dùng chọn "Có" để lưu các thay đổi chưa được lưu, thì BeforeSave() được thực thi sau BeforeClose(). Tuy nhiên, nếu người dùng chọn "Hủy bỏ", sau đó nhấn "tập tin-> lưu", cùng một thứ tự chính xác của các sự kiện được thực thi. Hơn nữa, nếu người dùng chọn "Không", thì BeforeSave() sẽ không được thực thi. Điều tương tự cũng được giữ miễn là người dùng không nhấp vào bất kỳ tùy chọn nào trong số các tùy chọn này.
Xin chào Nelson - vâng, tôi đã bảo hiểm điều đó. Vấn đề là "và BeforeSave() không phải" một phần của đề xuất của bạn là semidecidable. Nếu nó không được gọi, tôi có thể chờ đợi nhưng không bao giờ quyết định liệu điều này có nghĩa là anh ta bị hủy bỏ, anh ta đã chọn không, hoặc anh ta vẫn chưa nhấp vào bất kỳ nút nào. – chiccodoro