I've already searched a lot on that subject and I've tried many things. In fact, I need to ask user to save as a custom type that is not available within the msoFileDialogSaveAs
filters.
I know I could save as, let's say, *.txt
and then change the extension before save. I did this and it worked but when the user enter the name of the file in a folder already containing other files of the custom type, the user won't see the existing custom files list because the active filter is not of that type.
Therefore, I was wondering if there was a way to use msoFileDialogFilePicker
to save as a custom type by typing the name of the file.
Here is what is could look like:
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
Thanks for the help!
Like I mentioned in the comments, you can use Application.GetSaveAsFilename
The syntax is
expression.GetSaveAsFilename(InitialFilename, FileFilter, FilterIndex, Title, ButtonText)
And here is an example to use it
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
In Action
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With