2009-05-19 15 views
5

में पूर्ववत इतिहास पढ़ें मेरे पास वर्ड 2003 में वीबीए का काफी सरल बिट है जो दस्तावेज़ के फ़ॉन्ट को 'इको फ़ॉन्ट' (लंबी कहानी) में बदलता है, और प्रिंट संवाद लाता है।वीबीए

जब कोई उपयोगकर्ता रद्द या ठीक करता है, तो कोड परिवर्तन को वापस करने के लिए 'पूर्ववत' करता है।

समस्या यह है कि कभी-कभी जब मैं दस्तावेज़ मुद्रित करने के लिए "ठीक" दबाता हूं, दो क्रियाओं को पूर्ववत करने की आवश्यकता होती है ('फ़ॉन्ट परिवर्तन' और 'फ़ील्ड अपडेट करें')। ऐसा लगता है कि यह कब होगा।

क्या वर्ड के पूर्ववत बफर में अंतिम आइटम पढ़ने का कोई तरीका है? इस तरह से जब तक फ़ॉन्ट परिवर्तन पूरा नहीं हो जाता है तब तक मैं केवल पूर्ववत दबा सकता हूं।

संपादित करें: अंतिम कोड (कटौती):

ActiveDocument.Range.Bookmarks.Add ("_tempEcoUndoStart_") 
ActiveDocument.Content.Font.Name = "Nanonymus Eco Sans" 
Dialogs(wdDialogFilePrint).Show 
While ActiveDocument.Bookmarks.Exists("_tempEcoUndoStart_") 
    ActiveDocument.Undo 
Wend 
+0

और स्पष्ट रूप से मैं न सिर्फ फ़ॉन्ट वापस क्योंकि वे एक दस्तावेज़ में एक से अधिक फोंट का उपयोग कर किया जा सकता है बदल सकते हैं। – ChristianLinnell

उत्तर

4

आप एक 'transactional' की तरह वर्ड में पूर्ववत करने के लिए एक चाल का उपयोग कर सकते हैं। जब आप अपने मैक्रो के साथ काम करते हैं तो आपको इस बुकमार्क को फिर से हटा देना चाहिए। अब, Undo कमांड को कॉल करते समय, दस्तावेज़ में अपना विशेष बुकमार्क होने पर पूर्ववत दोहराएं।

निम्नलिखित संबंधित सवाल यह विवरण होता है:

Can I create an undo transaction in Word or Excel? (VSTO)

+0

सुंदर! इसके लिए धन्यवाद! – ChristianLinnell

0

मैं परीक्षण नहीं किया, लेकिन शायद आप अपने कार्यों से पहले UndoClear उपयोग कर सकते हैं, और पूर्ववत करने के बाद पर एक गिनती? मैक्रो जगह की शुरुआत अपने पूरे दस्तावेज़ पर एक विशेष बुकमार्क में:

ActiveDocument.UndoClear 
ActiveDocument.Undo 2 
+0

शायद, हाँ, और मुझे करना पड़ सकता है। लेकिन यह उपयोगकर्ता के साथ विशेष रूप से अच्छी बात नहीं है :-( – ChristianLinnell