使用 Excel VBA saveas 函数通过用户交互保存为 PDF

Using Excel VBA saveas function to save as PDF with user interaction

首先 - 抱歉,如果标题有些混乱。我不太确定如何给这个问题起标题。

我有这个非常简单的 vba 宏,它可以打开保存对话框并根据单元格值预填充文件名:

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

有人问我是否可以在对话框打开时将 "save as type:" 字段更改为 PDF,但不会自动保存。最终用户需要首先导航到正确的文件夹。我环顾四周,但没有找到任何解释这个特定问题的话题。

谢谢。

您无法使用 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

试试这个:

Sub pdf()
Application.Dialogs(xlDialogSaveAs).Show "*.*", 57
End Sub