用.pdf作为Filter的Application.FileDialog(msoFileDialogSaveAs)

我正在寻找让用户select他们正在导出的PDF文件的path和文件名。

我创build了下面的窗口来显示SaveAs对话框:

Sub Test3() Set myFile = Application.FileDialog(msoFileDialogSaveAs) With myFile .Title = "Choose File" .AllowMultiSelect = False .ButtonName = "&Save As" .initialFilename = "Export" .Title = "Save PDF as" If .Show <> -1 Then MsgBox "You have cancelled" Exit Sub End If FileSelected = .SelectedItems(1) End With End Sub 

FileSelected的值稍后被馈送到pdf导出代码中。

我正在寻找添加一个filter到上面的FileSave对话框,以便它只显示PDF作为文件保存types。

目前FileSelected的价值最终是“Driveletter:/文件夹/名称.xlsm ”,所以当我把它input到pdf导出时,它将pdf保存为xlsm扩展名。

我已经尝试.Filter.Clear然后.Filters.Add没有太多的运气。

任何帮助将不胜感激!

没关系,我知道了:

 Sub Test3() On Error Resume Next Dim FileSelected As String FileSelected = Application.GetSaveAsFilename(initialFilename:="Export", _ FileFilter:="PDF Files (*.pdf), *.pdf", _ Title:="Save PDF as") If Not FileSelected <> "False" Then MsgBox "You have cancelled" Exit Sub End If If FileSelected <> "False" Then MsgBox FileSelected 'where FileSelected is what I will be 'later feeding into the PDF Export Code Exit Sub End If End Sub 

我在选项列表中添加了一个循环来运行文件types并select一个我想要的文件。 它有缺点,但工作…

 For I = 1 To .Filters.Count fName = .Filters(I).Description If fName = "PDF" Then .FilterIndex = I Exit For End If Next