none
Salvar o formulário do vba em pdf RRS feed

Respostas

  • Lucas,

    Conhecendo o seu problema um pouco mais de perto, percebi que o que você precisa é gerar um documento como resultado final. Por isso achei que a melhor opção seria chamar o Word em segundo plano para fazer o trabalho sujo. Segue o código:

    Private Sub CommandButton1_Click()
        'Chama um Objeto do Word
        Dim ObjWord As Object
        Set ObjWord = CreateObject("Word.Application")
        
        'Mostra a caixa de salvar
        CaminhoPDF = Application.GetSaveAsFilename(FileFilter:="Documento PDF (*.pdf), *.pdf")
    
        'checks to make sure the user hasn't canceled the dialog
        If CaminhoPDF <> False Then
            'Deixa o Word invisível para o usuário não saber o que
            'está sendo feito por trás
            ObjWord.Visible = True
            
            'Cria um documento sem utilizar nenhum template
            ObjWord.Documents.Add "Normal", False, 0
            
            'Monta o título do documento
            ObjWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            ObjWord.Selection.Font.Size = 22
            ObjWord.Selection.Font.Bold = True
            ObjWord.Selection.TypeText Text:="PDF de Exemplo"
            
            ObjWord.Selection.TypeParagraph 'Cria um novo parágrafo
            ObjWord.Selection.Font.Size = 12
            ObjWord.Selection.TypeParagraph
            
            'Ajusta o tamanho da fonte, e alinha o texto a esquerda
            ObjWord.Selection.Font.Size = 12
            ObjWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
            
            'Grava cada linha do User form com o título em negrito
            ObjWord.Selection.Font.Bold = True 'Título com negrito
            ObjWord.Selection.TypeText Label1.Caption + " - "
            ObjWord.Selection.Font.Bold = False 'Título com negrito
            ObjWord.Selection.TypeText TextBox1.Text
            ObjWord.Selection.TypeParagraph
            
            'Repita o bloco acima para cada campo que você desejar gravar
            
            'Gera o documento em PDF
            ObjWord.ActiveDocument.ExportAsFixedFormat CaminhoPDF, ExportFormat:= _
                wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
                wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
                Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
                CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
                BitmapMissingFonts:=True, UseISO19005_1:=False
            ObjWord.ActiveDocument.Close False
        
            'Fecha o word
            ObjWord.Quit
        End If
        
    End Sub


    No trecho

    'Grava cada linha do User form com o título em negrito

    Substitua o label e o text pelos que você tem em seu formulário.

    Boa sorte!

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    • Marcado como Resposta Lucas.85 segunda-feira, 18 de agosto de 2014 12:27
    sexta-feira, 15 de agosto de 2014 12:32
  • http://social.msdn.microsoft.com/Forums/getfile/511350

    Boa tarde Jean Carlos!

    Creio que desta forma serei mais objetivo.

    No link acima printei a tela de minha calculadora e a idéia é a seguinte:

    Após inserir os dados e mandar calcular, preciso salvar em pdf para não perder os dados anterior. Pois este formulário não está ligado a nenhuma planilha. É somente para cálculos.

    Você pode me ajudar ?

    Att; Lucas

    • Marcado como Resposta Lucas.85 segunda-feira, 18 de agosto de 2014 12:27
    quarta-feira, 13 de agosto de 2014 15:38

Todas as Respostas

  • Eu tenho um artigo que fazia isso..
    Faz download do arquivo e copia a função.

    http://code.msdn.microsoft.com/Criando-um-Ribbon-para-fb64329b

    Não é tão especifico como o seu problema, mas tenho o código que salvar em PDF com os recursos nativos do Word.
    Obs: Se você gostar atribua uma classificação com estrelas.


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 13 de agosto de 2014 13:27
  • Prezado Lucas,

    É interessante saber como é este seu formulário. Podem existir soluções diferentes se você quer exibir os campos, se você tem um campo memo que quer gerar um PDF, se está vinculado com um outro objeto (por exemplo word) ou se você tem uma grid que está exibindo os valores. Print da tela ou a planilha para download são sempre bem-vindos.

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    quarta-feira, 13 de agosto de 2014 15:11
  • Boa tarde Jean Carlos!

    Obrigado pela ajuda.

    Desculpe não ser claro pois estou iniciando na programação e comecei pelo VBA.

    Minha dificuldade a seguinte.

    Criei uma espécie de calculadora simples para calcular custo de produtos no VBA. Mais não está linkada a nenhuma planilha do excel, fiz nomente os códigos de cálculos pelo VBA.

    A dúvida é a seguinte, queria quando executar minha calculadora, após preencher os dados e calcular, eu poderia salvar os dados em formato pdf. para guardar os dados preenchidos.

    Você pode me ajudar?

    Desde já muito obrigado.

    Att; Lucas

    quarta-feira, 13 de agosto de 2014 15:23
  • http://social.msdn.microsoft.com/Forums/getfile/511350

    Boa tarde Bráulio!

    No link acima printei a tela de minha calculadora e a idéia é a seguinte:

    Após inserir os dados e mandar calcular, preciso salvar em pdf para não perder os dados anterior. Pois este formulário não está ligado a nenhuma planilha. É somente para cálculos.

    Você pode me ajudar ?

    Att;

    quarta-feira, 13 de agosto de 2014 15:37
  • http://social.msdn.microsoft.com/Forums/getfile/511350

    Boa tarde Jean Carlos!

    Creio que desta forma serei mais objetivo.

    No link acima printei a tela de minha calculadora e a idéia é a seguinte:

    Após inserir os dados e mandar calcular, preciso salvar em pdf para não perder os dados anterior. Pois este formulário não está ligado a nenhuma planilha. É somente para cálculos.

    Você pode me ajudar ?

    Att; Lucas

    • Marcado como Resposta Lucas.85 segunda-feira, 18 de agosto de 2014 12:27
    quarta-feira, 13 de agosto de 2014 15:38
  • Lucas,

    Não consegui baixar o arquivo. Parece que o link não está funcionando

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    quarta-feira, 13 de agosto de 2014 16:18
  • Lucas,

    Conhecendo o seu problema um pouco mais de perto, percebi que o que você precisa é gerar um documento como resultado final. Por isso achei que a melhor opção seria chamar o Word em segundo plano para fazer o trabalho sujo. Segue o código:

    Private Sub CommandButton1_Click()
        'Chama um Objeto do Word
        Dim ObjWord As Object
        Set ObjWord = CreateObject("Word.Application")
        
        'Mostra a caixa de salvar
        CaminhoPDF = Application.GetSaveAsFilename(FileFilter:="Documento PDF (*.pdf), *.pdf")
    
        'checks to make sure the user hasn't canceled the dialog
        If CaminhoPDF <> False Then
            'Deixa o Word invisível para o usuário não saber o que
            'está sendo feito por trás
            ObjWord.Visible = True
            
            'Cria um documento sem utilizar nenhum template
            ObjWord.Documents.Add "Normal", False, 0
            
            'Monta o título do documento
            ObjWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
            ObjWord.Selection.Font.Size = 22
            ObjWord.Selection.Font.Bold = True
            ObjWord.Selection.TypeText Text:="PDF de Exemplo"
            
            ObjWord.Selection.TypeParagraph 'Cria um novo parágrafo
            ObjWord.Selection.Font.Size = 12
            ObjWord.Selection.TypeParagraph
            
            'Ajusta o tamanho da fonte, e alinha o texto a esquerda
            ObjWord.Selection.Font.Size = 12
            ObjWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphLeft
            
            'Grava cada linha do User form com o título em negrito
            ObjWord.Selection.Font.Bold = True 'Título com negrito
            ObjWord.Selection.TypeText Label1.Caption + " - "
            ObjWord.Selection.Font.Bold = False 'Título com negrito
            ObjWord.Selection.TypeText TextBox1.Text
            ObjWord.Selection.TypeParagraph
            
            'Repita o bloco acima para cada campo que você desejar gravar
            
            'Gera o documento em PDF
            ObjWord.ActiveDocument.ExportAsFixedFormat CaminhoPDF, ExportFormat:= _
                wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
                wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
                Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
                CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
                BitmapMissingFonts:=True, UseISO19005_1:=False
            ObjWord.ActiveDocument.Close False
        
            'Fecha o word
            ObjWord.Quit
        End If
        
    End Sub


    No trecho

    'Grava cada linha do User form com o título em negrito

    Substitua o label e o text pelos que você tem em seu formulário.

    Boa sorte!

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    • Marcado como Resposta Lucas.85 segunda-feira, 18 de agosto de 2014 12:27
    sexta-feira, 15 de agosto de 2014 12:32
  • Bom dia Bráulio!

    Muito obrigado pela grande ajuda.

    Nem sei como agradecer. Funcionou super bem.

    Seus códigos me ajudou muito e irá ajudar inúmeras pessoas.

    Agradeço muito.

    Att; Lucas

    segunda-feira, 18 de agosto de 2014 12:31
  • Olá Bráulio,

    Você pode me ajudar?

    Quando eu tentei utilizar seu código, aparece a mensagem de erro abaixo na parte da geração de pdf

    "Erro em tempo de execução '5':

    Argumento ou chamada de procedimento inválida"

    Obrigada!

    sexta-feira, 5 de setembro de 2014 18:45
  • Monique, boa tarde!

    Me passa seu e-mail que eu posso enviar a macro de modelo. Ou para que possamos discutir o seu problema.

    Att.

    Bráulio Figueiredo

    braulio@braulioti.com.br - http://www.braulioti.com.br

    sexta-feira, 12 de setembro de 2014 19:51
  • Você conseguiu solucionar esse erro? Comigo acontece a mesma coisa

    sexta-feira, 30 de dezembro de 2022 16:37
  • Analisarei e te responderei logo mais
    segunda-feira, 9 de janeiro de 2023 18:45