Proteja o PDF da edição após converter do Excel

3

Abaixo está o código do VBA para converter um arquivo do Excel em PDF com o nome necessário do arquivo. Como posso modificar essa macro para proteger o PDF de ser editado?

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
    
por Vijay Marathe 17.08.2016 / 09:55

1 resposta

2

Como apontado em um comentário, não há maneira direta de conseguir isso sem ferramentas externas. Uma biblioteca PDF completa seria necessária, o que provavelmente é muito grande e complexo para incorporar em um arquivo do Excel.

Para evitar alterações de PDF , você pode usar ferramentas como PDFtk para criptografar as arquivo e limitar as permissões. Você pode chamar PDFtk do VBA usando a função Shell . Use pdftk --help para conhecer todas as opções.

Exemplo:

call Shell("pdftk.exe myfile.pdf output protected.pdf encrypt_128bit")

O exemplo assume que o pdftk.exe pode ser encontrado ao longo da pesquisa PATH . Adicione aspas duplas, caso seus caminhos de arquivo contenham espaços.

PDFtk não permite a impressão de arquivos criptografados, a menos que seja permitido explicitamente. Caso contrário, seria bastante fácil contornar essa restrição usando o imprimir no truque de arquivo .

    
por 17.08.2016 / 10:47