【问题标题】:Using Excel VBA saveas function to save as PDF with user interaction使用 Excel VBA saveas 功能通过用户交互保存为 PDF
【发布时间】: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,但不能自动保存。最终用户需要先导航到正确的文件夹。我环顾四周,但没有找到任何解释这个特定问题的线程。

谢谢。

【问题讨论】:

    标签: vba excel 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        • 1970-01-01
        • 2021-10-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多