VBA 代码将保存的 PDF 命名为 .xlsm.pdf

问题描述 投票:0回答:1

我的代码旨在自动创建 PDF,将其保存到特定位置并打开它。 PDF 必须以 Excel 文件的名称或单元格 L3 中的值命名(值相同)。但是,代码将保存的 pdf 命名为“example.xlsm.pdf”。我知道 .pdf 结尾是必要的,.xlsm 结尾不是。我如何修复或更改我的代码以正确命名文件?

Sub PDF()

If Range("D51") = "name1" Then

On Error Resume Next
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:="C:\Users\example\Documents\" & "\" & ActiveWorkbook.Name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

ElseIf Range("D51") = "name2" Then

On Error Resume Next
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:="C:\Users\tree\Documents\" & "\" & ActiveWorkbook.Name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

ElseIf Range("D51") = "name3" Then

On Error Resume Next
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:="C:\Lone\" & "\" & ActiveWorkbook.Name, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

End If


End Sub

代码首先查看 D51 单元格中的名称。然后,它将 PDF 保存在每个用户的特定位置,并打开所述 PDF。

excel vba
1个回答
0
投票

您必须删除扩展程序 - 因为它总是以

Activeworkbook.Name

返回
Public Sub saveAsPdf()

Dim Filename As String
Filename = ActiveWorkbook.Name
Filename = Left(Filename, InStrRev(Filename, "."))

Dim Path As String
Select Case ActiveSheet.Range("D51")
    Case "name1"
        Path = "C:\Users\example\Documents\"
    Case "name2"
        Path = "C:\Users\tree\Documents\"
    Case "name3"
        Path = "C:\Lone\"
    Case Else
        MsgBox "Unknown path in D51", vbCritical
        Exit Sub
End Select


If Dir(Path, vbDirectory) <> "" Then

    ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=Path & Filename, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=True
Else
    MsgBox "Folder " & Path & " doesn't exist"
End If

End Sub

此外,您应该避免

On error resume next

您可以检查路径 - 通过在将其读入

path
变量时使用检查 - 或使用
Dir

© www.soinside.com 2019 - 2024. All rights reserved.