允许用户选择 "print PDF" 的保存文件路径

Allow user to choose the save file path for "print PDF"

我在 Excel 文件上有一个命令按钮,允许用户通过单击自动执行 "Print PDF" 功能。问题是,目前我只能将文件保存到代码中的指定位置。我想让用户选择他们的保存目录类似于实际保存功能。

这是我目前的代码:

Private Sub PrintPDF_Button_Click()

    Dim mySheets As Variant, sh

    mySheets = Array("COVER", "SCOPE", "SUMMARY", "Updated Hours EST", "RATES")

    Sheets(mySheets).Select
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="C:\Users\sravi\test" & _
        ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, openafterpublish:=True

End Sub

使用Application.GetSaveAsFilename方法。使用返回值作为 Filename 属性,但在保存前检查以确保它不是 False

您可以使用的另一种方法是 Application.FileDialog() 方法。如果您愿意,您将能够设置默认保存位置甚至默认文件名。

Dim fileSave As FileDialog
Set fileSave = Application.FileDialog(msoFileDialogSaveAs)

With fileSave
    ' Your default save location here
    .InitialFileName = "C:\Users\sravi\*.pdf"

    If .Show = -1 Then

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1), _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, _
                IgnorePrintAreas:=False, openafterpublish:=True

    End If
End With

分解

您可以使用.InitialFileName 属性设置默认保存路径。如果您有默认文件名,则可以使用它。否则,使用 *.pdf

设置默认文件类型
.InitialFileName = "C:\Users\sravi\*.pdf"

下面一行有两个目的:

  1. 显示带有.Show

  2. 的对话框
  3. 确保用户接受了 .Show = -1

  4. 的保存位置

If .Show = -1 Then

最后,您将 return 您的文件路径指向您在这一行中使用的方法:

Filename:=.SelectedItems(1)