用msoFileDialogFilePicker保存
我已经在这个主题上进行了很多search,我尝试了很多东西。 实际上,我需要让用户保存为msoFileDialogSaveAs
filter中不可用的自定义types。
我知道我可以保存,比如说, *.txt
,然后在保存之前更改扩展名。 我这样做,它的工作原理,但是当用户在已经包含自定义types的其他文件的文件夹中input文件的名称时,用户将看不到现有的自定义文件列表,因为活动的filter不是这种types。
因此,我想知道是否有办法使用msoFileDialogFilePicker
通过键入文件的名称保存为自定义types。
以下是可能的样子:
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
谢谢您的帮助!
就像我在评论中提到的那样,你可以使用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
在行动