以下是将 Excel 文件转换为 PDF 的 VBA 代码,并带有所需的文件名。我该如何修改此宏以保护 PDF 不被编辑?
Private Sub CommandButton2_Click()
'saves the file as PDF and adds a date parameter to the name of the file
aux1 = ""
If Month(Date) < 10 Then
aux1 = "0"
End If
aux2 = ""
If Day(Date) < 10 Then
aux2 = "0"
End If
fileN = "Salary Slip of " & Workbooks.Application.Sheets("Salary Slip").Cells(10, 5).Value
fileD = Format(Sheets("Salary Slip").Cells(6, 2).Value, "mmm-yy")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & fileN & " for " & fileD & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True
End Sub
答案1
正如评论中指出的那样,没有外部工具就没有直接的方法来实现这一点。需要一个成熟的 PDF 库,它可能太大太复杂,无法合并到 Excel 文件中。
为了防止PDF
更改,您可以使用以下工具PDFtk加密文件并限制权限。您可以PDFtk
使用壳功能。使用pdftk --help
来了解所有选项。
例子:
call Shell("pdftk.exe myfile.pdf output protected.pdf encrypt_128bit")
该示例假设可以在搜索中找到 pdftk.exe PATH
。如果文件路径包含空格,请添加双引号。
PDFtk
不允许打印加密文件,除非明确允许。否则,使用打印到文件技巧。