Notifications
Clear all

Código para gerar PDF

5 Posts
2 Usuários
0 Reactions
3,535 Visualizações
(@grlisboa)
Posts: 0
New Member
Topic starter
 

Boa noite,

Como não possuo muito conhecimento com VBA, peguei um código pronto para que através de um botão eu consiga gerar um PDF de um determinado intervalo de células. Segue o código:

Sheets("lista_de_compras").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="lista_de_compras", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

MsgBox "PDF gerado com sucesso!"

O código funciona perfeitamente, porém gostaria de definir um local exato para que o arquivo PDF seja salvo, pois essa planilha será compartilhada com outras pessoas. Teria uma forma de fazer com que o arquivo PDF seja salvo no mesmo local ou pasta que a planilha está salva? Ou de repente se não for possível, que ela seja salva sempre dentro do C:. Seria interessante que ela fosse salva também dentro dos meus documentos ou na área de trabalho, só que acredito que isso seja um problema, pois dependendo do windows esses dois caminhos mudam, ou estou errado?

Agradeço desde já.

 
Postado : 16/09/2015 5:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Veja se é isto, é só definir o nome do arquivo e o diretorio que quer salvar :

Adaptação do código no link abaixo :
A macro neste link é mais completa e tem outras opções alem de verificar a versão do Excel, vale a pena dar uma olhada :
Macro Excel VBA para criar PDF
http://forum.clubedohardware.com.br/top ... criar-pdf/

Sub Criar_PDF_Mauro()
    Dim Filepdf, rNome, ePath, Filename As String

    rNome = "lista_de_compras"
    ePath = "C:Seu_CaminhoMeus_Pdfs"
    
    Filename = Trim(rNome & ".Pdf")
    Filepdf = ePath & Trim("" & Filename)

    Sheets("lista_de_compras").Select

    Application.DisplayAlerts = False
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Filepdf, _
            Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
            OpenAfterPublish:=True

    MsgBox "PDF gerado com sucesso!"
    
End Sub
 
Postado : 16/09/2015 6:17 pm
(@grlisboa)
Posts: 0
New Member
Topic starter
 

Mauro,

Muito obrigado, funcionou corretamente no meu computador, porém eu preciso de um caminho que seja padrão para usar em qualquer computador. Por exemplo, se eu definir no código o caminho "C:UsersGiovaniDesktop", no meu computador funcionará perfeitamente, mas assim que abrir em outro micro, retornará um erro. Teria uma forma de deixar o caminho padrão para que funcione em todos os computadores? Tentei adaptar o código deixando apenas para salvar dentro do C:, mas não funciona também.

 
Postado : 16/09/2015 8:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Lisboa, eu acho que o ideal seria criar uma nova pasta e esta ficar padrão, porem tambem poderemos ter alguns impasses dependendo do PC em que iremos executar, por exemplo, aqui no serviço nós temos acesso ao drive " C:" mas não temos permissão de criar pastas e nem salvar nada neste drive devido a restrição de Administrador.

Uma sugestão seria criar a pasta a nivel de usuário (Users), a rotina abaixo captura o nome do usuário e verifica se existe a pasta Desktop, e se verdadeiro define o novo caminho em "ChDir curPath" e armazena na Variavel "sDiretorioAtual ", a qual pode-se utilizar para salvar o arquivo, como não tenho varias versões de excel nem de sistema operacional, faça alguns teses nos pcs que tem e veja se ajuda.

Sub VerificaPastaCaminho()

    Dim fPathOK As Boolean
    Dim curPath As String
    
    On Error Resume Next
    Dim UserName As String
    
    UserName = Environ("username")
    
    ChDir "C:Users" & UserName & "Desktop"
        
        If Err = 0 Then
           ChDir curPath
            fPathOK = True
            
            MsgBox CurDir
            sDiretorioAtual = CurDir
         
        Else
            MsgBox "Caminho - Pasta não localizado"
            Err.Clear
        End If
    
End Sub
 
Postado : 17/09/2015 6:46 am
(@grlisboa)
Posts: 0
New Member
Topic starter
 

Muito obrigado Mauro, funcionou perfeitamente.

 
Postado : 23/09/2015 3:10 pm