使用 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
首先 - 抱歉,如果标题有些混乱。我不太确定如何给这个问题起标题。
我有这个非常简单的 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