2013-11-28 3 views
5

मैंने पहले से ही उस विषय पर बहुत कुछ खोजा है और मैंने कई चीजों की कोशिश की है। वास्तव में, मुझे उपयोगकर्ता को कस्टम प्रकार के रूप में सहेजने की आवश्यकता है जो msoFileDialogSaveAs फ़िल्टर के भीतर उपलब्ध नहीं है।msoFileDialogFilePicker के साथ सहेजें

मुझे पता है कि मैं बचा सकता हूं, *.txt और फिर सहेजने से पहले एक्सटेंशन को बदलें। मैंने यह किया और यह काम किया लेकिन जब उपयोगकर्ता पहले से ही कस्टम प्रकार की अन्य फाइलों वाले फ़ोल्डर में फ़ाइल का नाम दर्ज करता है, तो उपयोगकर्ता मौजूदा कस्टम फाइल सूची नहीं देख पाएगा क्योंकि सक्रिय फ़िल्टर उस प्रकार का नहीं है।

इसलिए, मैं सोच रहा था कि फ़ाइल का नाम टाइप करके कस्टम प्रकार के रूप में सहेजने के लिए msoFileDialogFilePicker का उपयोग करने का कोई तरीका था या नहीं।

Function userFileSaveDialog_OneFilterOnly(iFilter As String, _ 
            iExtension As String, _ 
            Optional iTitle As String) 

    With Application.FileDialog(msoFileDialogFilePicker) '(msoFileDialogSaveAs) 
     .Filters.Clear 
     .Filters.Add iFilter, iExtension 
     .AllowMultiSelect=False 
     .ButtonName "Save" 
     .Title = iTitle 
     If CBool(.Show) Then 
      userFileSaveDialog_OneFilterOnly = .SelectedItems(.SelectedItems.Count) 
     Else 
     End If 
    End With 

End Function 

मदद के लिए धन्यवाद:

यहाँ दिखाई दे सकता है है!

+0

क्यों नहीं का उपयोग 'Application.GetSaveAsFilename' यह आप फिल्टर का उपयोग के रूप में आप चाहते हैं कि उसे –

+0

खुशी है कि यह बाहर काम किया :) –

उत्तर

3

जैसे कि मैंने टिप्पणी में उल्लेख किया है, आप Application.GetSaveAsFilename

का उपयोग कर सकते वाक्य रचना यहाँ

expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)

है और एक उदाहरण है यह

Sub Sample() 
    Dim Ret 

    Ret = userFileSaveDialog_OneFilterOnly("My Special Files", "Sid", "An Example") 

    MsgBox Ret 
End Sub 

Function userFileSaveDialog_OneFilterOnly(iFilter As String, _ 
              iExtension As String, _ 
              Optional iTitle As String) 
    Dim Ret 

    Ret = Application.GetSaveAsFilename(fileFilter:=iFilter & _ 
                " (*." & _ 
                iExtension & _ 
                "), *." & iExtension, _ 
                Title:=iTitle) 

    If Ret <> False Then userFileSaveDialog_OneFilterOnly = Ret 
End Function 

उपयोग करने के लिए कार्रवाई में

enter image description here

+0

बिल्कुल सही करने देगा! इस बारे में नहीं पता था। मैंने सोचा कि 'FileDialog' ऑब्जेक्ट एकमात्र तरीका था। धन्यवाद! –

संबंधित मुद्दे