我的代码旨在自动创建 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。
您必须删除扩展程序 - 因为它总是以
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
。