2013-11-28 21 views
5

Bu konu hakkında çok fazla araştırma yaptım ve çok fazla şey denedim. Aslında, kullanıcıdan, msoFileDialogSaveAs filtrelerinde bulunmayan özel bir tür olarak kaydetmesini istemek zorundayım.msoFileDialogFilePicker ile Kaydetme

*.txt olarak kaydedebileceğimi ve sonra kaydetmeden önce uzantıyı değiştirebileceğimi biliyorum. Bunu yaptım ve işe yaradı, ancak kullanıcı özel türdeki diğer dosyaları içeren bir klasördeki dosyanın adını girdiğinde, etkin filtre bu türden olmadığından, kullanıcı mevcut özel dosya listesini görmez.

Bu nedenle, dosyanın adını yazarak özel bir tür olarak kaydetmek için msoFileDialogFilePicker kullanmanın bir yolu olup olmadığını merak ediyordum. Yardım için

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 

teşekkür:

Burada gibi görünebilir budur! Ben yorum olarak bahsedilen gibi

+0

Neden kullanmak 'Size –

+0

İyi ki çalıştı istediğiniz gibi filtreyi kullanmak sağlayacak Application.GetSaveAsFilename'! Bunu bilmiyordum. FileDialog' nesnesinin tek yol olduğunu düşündüm. Teşekkürler! –

cevap

3

, sen sözdizimi burada

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

Ve Application.GetSaveAsFilename

kullanabilirsiniz Eylem yılında o

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 

kullanmak için bir örnektir

enter image description here

+0

Mükemmel :) o –

İlgili konular