使用 Excel VBA saveas 功能通过用户交互保存为 PDF
Posted
技术标签:
【中文标题】使用 Excel VBA saveas 功能通过用户交互保存为 PDF【英文标题】:Using Excel VBA saveas function to save as PDF with user interaction 【发布时间】:2015-01-21 13:46:29 【问题描述】:首先 - 抱歉,如果标题有些混乱。我不确定如何命名这个问题。
我有一个非常简单的 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
有人问我是否可以在对话框打开时将“另存为类型:”字段更改为 PDF,但不能自动保存。最终用户需要先导航到正确的文件夹。我环顾四周,但没有找到任何解释这个特定问题的线程。
谢谢。
【问题讨论】:
【参考方案1】:试试这个:
Sub pdf()
Application.Dialogs(xlDialogSaveAs).Show "*.*", 57
End Sub
【讨论】:
【参考方案2】:您无法使用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
【讨论】:
以上是关于使用 Excel VBA saveas 功能通过用户交互保存为 PDF的主要内容,如果未能解决你的问题,请参考以下文章