Notifications
Clear all

Criar PDF com senha via VBA

5 Posts
2 Usuários
0 Reactions
1,943 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde pessoas,
Estou com uma necessidade no trabalho, que é criar PDF a partir de planilhas do Excel via VBA. Isso já sabemos é bem fácil.

O meu cliente pediu, devido à sensibilidade da informação, que este PDF seja protegido por senha, de forma que somente o receptor do email saiba e consiga abri-lo.

Ou seja, preciso gerar um PDF com senha via macro.
Alguém sabe me ajudar? Se sim, como faz?

Obrigado,

FF

 
Postado : 13/12/2014 2:26 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Até onde sei, a funcionalidade do Exportasfixedformat:= PDF; não permite ainclusão de senha.
Sendo isso inerente a programas tipo Adobe.PDF.Creator, programa pago.
Porem até a versão 2003 gerar pdf em vba era possível com a utilização de programas emuladores de impressão tipo PDFcreator ( http://www.pdfforge.org/pdfcreator ), segundo o site é possivel utilizar proteção com senha. ( http://www.streetdirectory.com/travel_g ... ument.html)
No link abaixo a rotina básica para isso, porem sem a senha, esse precisa testar/incluir:
http://www.excelguru.ca/forums/showthre ... t-in-email

 
Postado : 13/12/2014 3:15 pm
(@basole)
Posts: 487
Reputable Member
 

Qdo. preciso gerar pdf c/ senha, eu uso esse utilitario free 'pdftk.exe' : https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Ele converte o arq. pdf 'normal' para um pdf c/ senha c/ linha de comando no dos, veja o exemplo abaixo:

 Option Explicit

Sub CriarPDF_Com_Senha()
    Dim strPath, FileName, OutputFile, Senha As String
    Dim strExec As Variant
    strPath = ThisWorkbook.Path & ""
    FileName = "Pasta1.pdf"
    OutputFile = "Pasta1-ComSenha.pdf"
    Senha = "1234"


    ActiveSheet.PageSetup.Orientation = xlLandscape
    ActiveSheet.Range("A1:p20").ExportAsFixedFormat Type:=xlTypePDF, FileName:=strPath & FileName, _
                                                    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
                                                                                                            :=False, OpenAfterPublish:=False

    strExec = Chr(34) & Chr(34) & strPath & "PDFTK.EXE" & Chr(34) & Chr(32) & Chr(34) & strPath & FileName & _
              Chr(34) & " output " & strPath & OutputFile & " owner_pw foo user_pw " & Senha & Chr(34) & Chr(34)

    Call Shell("cmd /C " & strExec, vbMinimizedNoFocus)
    MsgBox "Arquivo " & strPath & OutputFile & vbLf & "com senha criado com sucesso", 0, "Sucesso"

End Sub

Segue o ex. em anexo o o utilitario a dll e a plan exemplo.
A macro está ajustada para rodar c/ todos arquivos na mesma pasta.

 
Postado : 14/12/2014 4:17 pm
(@basole)
Posts: 487
Reputable Member
 

Pelo tamanho do arquivo nao consegui anexar no forum.
Segue abaixo o link do anexo:

https://www.sendspace.com/file/pfehq0

 
Postado : 14/12/2014 4:21 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Vou conferir, obrigado meninos!
Dps eu posto aqui o que atendeu melhor e mais fácil !

FF

 
Postado : 15/12/2014 11:52 am