使用Excel VBA saveas功能可以通过用户交互保存为PDF

时间:2015-01-21 13:46:29

标签: excel vba excel-vba pdf

首先 - 如果标题有点令人困惑,请抱歉。我真的不确定如何解决这个问题。

我有这个非常简单的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但不自动保存。最终用户需要首先导航到正确的文件夹。我环顾四周,但没有找到解释这个特定问题的线索。

谢谢。

2 个答案:

答案 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