2010-09-03 10 views
6

मेरा एमएस वर्ड 2007 टेम्पलेट में फ़ाइल नाम के साथ एक पाद लेख है। उपयोगकर्ता टेम्पलेट खोलने जा रहा है और अपना दस्तावेज़ बनाने के लिए "इस रूप में सहेजें ..." कर रहा है।इवेंट

मैं चाहता हूं कि नए फ़ाइल नाम पर तुरंत अपडेट करने के लिए पाद लेख में दिखाया गया फ़ाइल नाम।

क्या कोई AfterSaveEvent है या कुछ ऐसा है जो मैं अपनी वीबीए स्क्रिप्ट शुरू करने के लिए एक हुक के रूप में उपयोग कर सकता हूं जो अद्यतन करता है?

या क्या कोई आसान तरीका है?

उत्तर

4

बस इस तरह एक मैक्रो बनाते हैं (मेरा मानना ​​है कि यह बेहतर काम करता है Normal.dot में अगर शामिल)

Sub FileSaveAs() 
' 
' FileSaveAs Macro 
' Saves a copy of the document in a separate file 
' 
Dialogs(wdDialogFileSaveAs).Show 

'returns the name including the .doc extension 
ChosenFileNameAndExtension = ActiveDocument.Name 'Or use .FullName 

' Your code here 

End Sub 

यह जब भी उपयोगकर्ता का चयन करता

HTH "इस रूप में सहेजें फ़ाइल" ट्रिगर किया जाएगा!

+0

उत्तर के लिए धन्यवाद। मेरा आईटी चैप इस पर कुछ परीक्षण कर रहा है ... अगर यह काम करता है तो इसे स्वीकार कर लिया जाएगा। – blokeley

+0

@blokeley परिणाम के साथ एक टिप्पणी पोस्ट करें। सौभाग्य! –

+0

उत्कृष्ट, यह पहली बार काम किया। मैं दूसरों के लिए नीचे पूरा समाधान पोस्ट करूंगा। – blokeley

1

यह @belisarius 'उत्तर के आधार पर काम:

Sub UpdateAll() 
    Dim oStory As Object 
    Dim oToc As Object 

    'Exit if no document is open 
    If Documents.Count = 0 Then Exit Sub 
    Application.ScreenUpdating = False 

    For Each oStory In ActiveDocument.StoryRanges 
     oStory.Fields.Update 'Update fields in all stories 
    Next oStory 

    For Each oToc In ActiveDocument.TablesOfContents 
     oToc.Update 'Update table of contents 
    Next oToc 

    Application.ScreenUpdating = True 
End Sub 

Sub FileSaveAs() 
' 
' FileSaveAs Macro 
' Saves a copy of the document in a separate file 
' 
Dialogs(wdDialogFileSaveAs).Show 

UpdateAll 


End Sub 
+0

अच्छा! इसे पोस्ट करने के लिए धन्यवाद –

0

हम जानते हैं कि Aftersave घटना माइक्रोसॉफ्ट वर्ड के लिए उपलब्ध नहीं है। लेकिन शब्द हमें BeforeSave घटना का उपयोग करने की अनुमति देता है। मैंने इस समाधान को लागू किया है और यह ठीक काम करता है।

पहले हम के रूप में

Private Sub mobjWord_DocumentBeforeSave(ByVal Doc As Word.Document, SaveAsUI As Boolean, Cancel As Boolean) 
    Word.Application.OnTime Now + TimeValue("00:00:02"), "AfterSave" 
End Sub 

इस विधि इस प्रकार विधि 2 सेकंड के बाद AfterSave बुलाया फोन करेगा वर्ड BeforeSave घटना में Application.onTime विधि को लागू करने की है।

Public Sub AfterSave() 
    While Word.ActiveDocument.Application.BackgroundSavingStatus <> 0 
     DoEvents 
    Wend 
'Implement your code here 
End Sub 

इस विधि में जबकि दस्तावेज़ लूप प्रक्रिया पूरी होने तक लूप को प्रसारित किया जाएगा। तो आप थोड़ी देर के बाद कोड को कार्यान्वित कर सकते हैं।