首先 - 如果标题有点令人困惑,请抱歉。我真的不确定如何解决这个问题。
我有这个非常简单的vba宏,它会打开saveas对话框并根据单元格值预填充文件名:
Sub SaveAsFunction()
If Sheet1.Range("B17").Value = vbNullString Then
MsgBox "Cell B17 must not be empty"
End
End If
Dim fileName As String
fileName = Sheet1.Range("B17").Value
Application.Dialogs(xlDialogSaveAs).Show fileName
End Sub
我被问到是否可以更改"保存类型:"对话框打开时字段为PDF但不自动保存。最终用户需要首先导航到正确的文件夹。我环顾四周,但没有找到解释这个特定问题的线索。
谢谢。
答案 0 :(得分:2)
试试这个:
Sub pdf()
Application.Dialogs(xlDialogSaveAs).Show "*.*", 57
End Sub
答案 1 :(得分:1)
您无法使用Application.Dialogs
方法完成此操作,但是,您可以将Application.GetSaveAsFilename
方法与文件过滤器一起使用:
Function SaveAsPDF() As String
SaveAsPDF = Application.GetSaveAsFilename(, "PDF Files (*.PDF), *.PDF")
If (SaveAsPDF = "False") Then SaveAsPDF = "" 'user cancelled.
End Function
这种方法实际上并没有保存任何东西,所以你必须做这样的事情:
Dim saveFilePath As String
saveFilePath = SaveAsPDF()
'if user didn't cancel...
If (Len(saveFilePath) > 0) Then
'use whatever third-party technology you are planning to use to save to PDF.
End If