我已经在这个问题上搜索了很多,我尝试了很多东西。实际上,我需要让用户保存为msoFileDialogSaveAs
过滤器中不可用的自定义类型。
我知道我可以保存为*.txt
,然后在保存之前更改扩展名。我这样做了,但是当用户在已经包含自定义类型的其他文件的文件夹中输入文件的名称时,用户将看不到现有的自定义文件列表,因为活动过滤器不属于该类型。 / p>
因此,我想知道是否有办法通过输入文件名来使用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 :(得分: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
在行动