मेरे पास एक एप्लिकेशन ऑब्जेक्ट के साथ ऐड-इन है। वस्तु के साथ घोषित किया गया है। जब भी उपयोगकर्ता फ़ाइल सहेजता है, तो यह मुझे कुछ डेटा पॉइंट्स को केंद्रीय डेटाबेस में फ्लश करने में सक्षम बनाता है। यह ज्यादातर समय काम करता है। हालांकि, एक ऐसा उपयोगकर्ता है जो Excel एप्लिकेशन को छोड़ देता है, जो सहेजें संवाद बॉक्स को कॉल करता है। ऐसा प्रतीत होता है कि एक सहेजी गई फ़ाइल के साथ Excel को छोड़ने का अर्थ है कि वर्कबुक BforeforeSave ईवेंट आग नहीं करता है।एक्सेल वीबीए - वर्कबुकबेयरसेव इवेंट
बस जोर देने के लिए, मैंने पुष्टि की है कि जब उपयोगकर्ता CTRL-S को दबाता है, या सहेजने वाला बटन दबाता है तो ईवेंट आग लगती है। मैंने यह भी पुष्टि की है कि अगर मैं आवेदन छोड़ देता हूं तो घटना आग नहीं लगती है।
मैं कुछ कामकाज के बारे में सोच सकता हूं (उदाहरण के लिए प्रत्येक 10 सेकंड स्वचालित रूप से सहेजता है), लेकिन मैं इसके बारे में पागल नहीं हूं। क्या कोई इस व्यवहार की पुष्टि कर सकता है और/या किसी के पास कोई उपाय है?
Option Explicit
Private WithEvents mapp As Excel.Application
Private Sub mapp_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Sanity preservation device
Msgbox "WorkbookBeforeSave event fired."
SaveSomeData Wb
End Sub
तो क्या घटना पूरी तरह से आग लगती है? शायद आप यह सुनिश्चित करना चाहते हैं कि 'application.enableEvents = True' – Larry
हां, अगर मैं CTRL-S का उपयोग करके कार्यपुस्तिका को सहेजता हूं या रिबन में सेव बटन दबाता हूं तो ईवेंट आग लगती है। हालांकि, अगर मैंने एक्सेल (एएलटी-एफ 4) छोड़ दिया है, तो मुझे फ़ाइल को सहेजने के लिए कहा जाएगा, लेकिन वर्कबुकबेयरसेव घटना को निकाल दिया नहीं जाएगा। यदि ऑनक्यूइट या एप्लिकेशन ऑब्जेक्ट के लिए कुछ ऐसी चीज थी, तो मैं इसका उपयोग करूंगा। हालांकि, मुझे ऐसा कुछ नहीं दिख रहा है। – PirateGrunt