2012-10-18 27 views
8

यह प्रश्न लंबे समय तक टिप्पणियों और प्रस्तावित उत्तरों के अपडेट के कारण संपादित किया गया है।एक्सेल वीबीए ओपन वर्कबुक, क्रियाएं करें, बंद करें

जैसा कि यहां अनुरोध किया गया है मॉड्यूल 13 है;

Sub SaveInFormat() 
Application.DisplayAlerts = False 
Workbooks.Application.ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data\" & Format(Date, "yyyymm") & "DB" & ".xlsx", leFormat:=51 
Application.DisplayAlerts = True 
End Sub 

इसके अलावा errorhandling के साथ मुद्दों मैं जानता हूँ कि मैं इसके साथ गलत हो गया है, लेकिन मैं इस समय करीब समारोह फिक्सिंग से पहले मैं इसे में मिल में अधिक रुचि रखते कर रहा हूँ कर रहे हैं। यहाँ त्रुटि हैंडलिंग कोड है कि कुछ काम

Sub test() 

Dim wk As String, yr As String, fname As String, fpath As String 
Dim owb As Workbook 

wk = ComboBox1.Value 
yr = ComboBox2.Value 
fname = yr & "W" & wk 
fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data" 
owb = Application.Workbooks.Open(fpath & "\" & fname) 
On Error GoTo ErrorHandler: 
ErrorHandler: 
If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Exit Sub Else Call Clear 

'Do Some Stuff 

Call Module13.SaveInFormat 

owb.Close 

इस अपने परीक्षण कोड के साथ साथ फ़ाइल पथ और नाम

+2

अच्छी तरह से, मैं सिर्फ अपने प्रश्न के रूप में देखा: "कुल मिलाकर मैं कुछ कार्यपुस्तिका खोलने के लिए और या तो कुछ कार्रवाई करने के लिए मेरे userform में एक बटन के लिए एक समारोह चाहते हैं , प्रारूप में सहेजें और फिर कार्यपुस्तिका को खोलें या खोलें और जानकारी प्रदर्शित करें। " - वे सभी सर्पेट कार्य हैं, जो एक्सेल-हेल्प या नेट में समाधान प्राप्त करने में काफी आसानी से हैं - यहां आपके प्रश्न "सुंदर कृपया, मेरा काम करें" जैसे कुछ अलग हो जाते हैं - इसे एक और कोड से संबंधित प्रश्नों में विभाजित करें । – Jook

उत्तर

8

चर्चा पोस्टिंग अद्यतन जवाब के बाद:

Option Explicit 
Sub test() 

    Dim wk As String, yr As String 
    Dim fname As String, fpath As String 
    Dim owb As Workbook 

    With Application 
     .DisplayAlerts = False 
     .ScreenUpdating = False 
     .EnableEvents = False 
    End With 

    wk = ComboBox1.Value 
    yr = ComboBox2.Value 
    fname = yr & "W" & wk 
    fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data" 

    On Error GoTo ErrorHandler 
    Set owb = Application.Workbooks.Open(fpath & "\" & fname) 

    'Do Some Stuff 

    With owb 
     .SaveAs fpath & Format(Date, "yyyymm") & "DB" & ".xlsx", 51 
     .Close 
    End With 

    With Application 
     .DisplayAlerts = True 
     .ScreenUpdating = True 
     .EnableEvents = True 
    End With 

Exit Sub 
ErrorHandler: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then 

Else: Call Clear 

End Sub 

त्रुटि हैंडलिंग:

आप एक विशिष्ट त्रुटि को पकड़ने के लिए कुछ इस तरह की कोशिश कर सकते:

On Error Resume Next 
    Set owb = Application.Workbooks.Open(fpath & "\" & fname) 
    If Err.Number = 1004 Then 
    GoTo FileNotFound 
    Else 
    End If 

    ... 
    Exit Sub 
    FileNotFound: If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then 

    Else: Call Clear 
+0

लाइन 'owb.close' को हटाएं यदि यह अब भी खुला नहीं है। यदि आप सहेजने के बाद इसे बंद करना चाहते हैं तो अपनी नई कार्यपुस्तिका के नाम को संदर्भित करने के लिए एक और पंक्ति जोड़ें। –

+0

हां एक ही विधि लागू हो सकती है जैसे: '.SaveAs mypath & "\" और yr और mnth' –

+0

अगर हम थोड़ी सी बैकट्रैक करते हैं, तो क्या आपने कार्यपुस्तिका के रूप में' ओडब्लूबी 'घोषित किया है और इसे आधारित कार्यपुस्तिका पर सेट किया है comboboxes से व्युत्पन्न मूल्यों पर? अगर मैं आपको समझता हूं तो इस कार्यपुस्तिका पर कुछ और क्रियाएं करें जो खोला गया था और इसे एक अलग फ़ाइल नाम (YYYYMMDB.xlsx) के रूप में सहेजें? यदि ऐसा है तो आपको अभी भी कार्यपुस्तिका को बंद करने के लिए 'oWB' चर का उपयोग करने में सक्षम होना चाहिए। –

2

मैं कोशिश करते हैं और कई अलग अलग चीजें जवाब देंगे की मेरी बदलते है की जरूरत है, लेकिन मेरे योगदान नहीं हो सकता अपने सभी सवालों को कवर करें। शायद हम में से कई इस से अलग भाग ले सकते हैं। हालांकि, यह जानकारी आपके लिए उपयोगी होनी चाहिए। ये हम चले ..

खुलने का एक अलग फ़ाइल:

ChDir "[Path here]"       'get into the right folder here 
Workbooks.Open Filename:= "[Path here]"  'include the filename in this path 

'copy data into current workbook or whatever you want here 

ActiveWindow.Close       'closes out the file 

कोई फ़ाइल खोलने में निर्धारित तिथि के साथ यदि वह मौजूद है:

मैं खोज करने के लिए कैसे यकीन नहीं है यह देखने के लिए कि आपकी कोई फ़ाइल मौजूद है या नहीं, लेकिन मेरे मामले में मैं इसे खोजने के लिए परेशान नहीं हूं, मैं इसे खोलने की कोशिश करता हूं और कुछ त्रुटि जांच में डालता हूं ताकि यदि यह अस्तित्व में न हो तो यह संदेश प्रदर्शित करें या xyz करो

कुछ सामान्य त्रुटि जाँच बयान:

On Error Resume Next 'if error occurs continues on to the next line (ignores it) 

ChDir "[Path here]"       
Workbooks.Open Filename:= "[Path here]"  'try to open file here 

या (बेहतर विकल्प):

if one doesn't exist then bring up either a message box or dialogue box to say "the file does not exist, would you like to create a new one?

आप सबसे अधिक संभावना GoTo ErrorHandler नीचे दर्शाया गया का उपयोग करना चाहते हैं यह

प्राप्त करें त्रुटि पर
On Error GoTo ErrorHandler: 

ChDir "[Path here]"       
Workbooks.Open Filename:= "[Path here]"  'try to open file here 

ErrorHandler: 
'Display error message or any code you want to run on error here 

बहुत अधिक जानकारी यहाँ से निपटने: http://www.cpearson.com/excel/errorhandling.htm


इसके अलावा यदि आप और अधिक जानने के लिए या VBA में अधिक आम तौर पर पता करने के लिए मैं सिद्धार्थ राउत की साइट की सिफारिश करेंगे की जरूरत करना चाहते हैं, वह बहुत सारे ट्यूटोरियल और उदाहरण कोड यहां: http://www.siddharthrout.com/vb-dot-net-and-excel/

आशा है कि इससे मदद मिलती है!


कैसे त्रुटि कोड सुनिश्चित करने के लिए हर नहीं चलता है पर उदाहरण:

यदि आप पहले त्रुटि हैंडलर Exit Sub बिना कोड के माध्यम से डिबग आप जल्दी ही त्रुटि हैंडलर का एहसास करेंगे चलाया जाएगा अगर कोई त्रुटि हो या नहीं, तो हर बार पुनर्जन्म।कोड उदाहरण के नीचे दिया गया लिंक इस प्रश्न का पिछला उत्तर दिखाता है।

Sub Macro 

    On Error GoTo ErrorHandler: 

    ChDir "[Path here]"       
    Workbooks.Open Filename:= "[Path here]"  'try to open file here 

    Exit Sub  'Code will exit BEFORE ErrorHandler if everything goes smoothly 
        'Otherwise, on error, ErrorHandler will be run 

    ErrorHandler: 
    'Display error message or any code you want to run on error here 

    End Sub 

इसके अलावा, इस दूसरे सवाल को देखो आप यह कैसे काम करता करने के लिए और अधिक संदर्भ की जरूरत है: goto block not working VBA


+0

धन्यवाद, दुर्भाग्य से मैं अब काम छोड़ रहा हूं लेकिन मैं इसे कल देखूंगा – JamesDev

+0

आपके द्वारा हेरिन के लिए अच्छी लग रही है –

+0

मैंने कोशिश की गई फ़ाइल खोलने में विफल होने पर संदेश बनाने के लिए आपकी त्रुटि प्रबंधन का उपयोग किया है। दुर्भाग्यवश जब फ़ाइल खुलती है तो मुझे अभी भी संदेश मिलता है – JamesDev