carmelito 18/7/2021, 23:05
Boa noite.
Não abri um novo tópico, pois a dúvida é a mesma. Eu tenho um modelo de word (atestado_1.docx), por causa da pessoa, se desejar alterar parte do texto (que não sejam os indicadores), faz no modelo, diferente de um relatório não tem acesso para alterar. Tenho um formulário com vários campos, botão, ao clicar, ele abre arquivo modelo, cola os campos do formulário e salva em outro word, tudo perfeito, mas gostaria em salvar também em pdf, não deu certo pelos exemplos do tópico, se alguém tiver uma ideia.
segue o código do botão.
Private Sub Comando17_Click()
Dim oApp As Object 'Cria uma variável objeto
On Error GoTo TrataErro
'Carregamos a barra de progressão
DoCmd.OpenForm "frm_001_BarraProgresso"
With Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form
.Title = "Gerando Atestado Acadêmico."
.BarColor = RGB(21, 43, 57)
.ForeColor = RGB(163, 163, 163)
.Max = 83
End With
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
'Inicia o MS Word
Set oApp = CreateObject("Word.Application") 'Cria e abre o objeto Word
With oApp
'Torna o MS Word visível
visible = True
'Abre o documento base
.Documents.Open CurrentProject.Path & "\Modelos_Atestados\atestado_1.docx"
'Move cada campo para o indicador definido no documento
.ActiveDocument.Bookmarks("quealuno").Select
.Selection.Text = Trim(CStr(Me.Texto19))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("nome").Select
.Selection.Text = Trim(CStr(Me.Nome))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("portador").Select
.Selection.Text = Trim(CStr(Me.Texto21))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("cpf").Select
.Selection.Text = Trim(CStr(Me.CPF))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("matrícula").Select
.Selection.Text = Trim(CStr(Me.Matrícula))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("matriculada").Select
.Selection.Text = Trim(CStr(Me.Texto24))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("curso").Select
.Selection.Text = Trim(CStr(Me.Curso))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("data").Select
.Selection.Text = Trim(CStr(Me.Texto26))
Forms!frm_001_BarraProgresso!ctlSbfPBH2.Form.Progress
.ActiveDocument.Bookmarks("localizador").Select
.Selection.Text = Trim(CStr(Me.Texto34))
'Fecha a barra de progresso
DoCmd.Close acForm, "frm_001_BarraProgresso"
'Salva o documento
.ActiveDocument.SaveAs CurrentProject.Path & "\Atestados_Gerados\" & Me.Nome & "_" & Me.Curso & "_" & Format(Date, "mmmm") & "_" & Format(Date, "yyyy") & ".docx"
'Fecha o word
.ActiveDocument.Close
MsgBox "Atestado Gerado Com Sucesso...", vbInformation
'Abre o a pasta com o arquivo
Shell "C:\WINDOWS\explorer.exe """ & CurrentProject.Path & "\Atestados_Gerados\" & "", vbNormalFocus
End With
oApp.Quit
Set oApp = Nothing
Saida:
Exit Sub
TrataErro:
'Se um campo do formulário estiver vazio, remove o texto do Indicador e continua
If Err.Number = 94 Then
oApp.Selection.Text = ""
Resume Next
End If
MsgBox "Erro # " & Str(Err.Number) _
& vbNewLine & "Descrição: " & Err.Description _
& vbNewLine & vbNewLine & "Por favor contate o Administrador do Sistema."
MsgBox Msg, vbExclamation, "Atenção"
'Fecha a barra de progresso
DoCmd.Close acForm, "frm_001_BarraProgresso"
#If DESENV Then
oApp.Quit
Set oApp = Nothing
Stop
Resume
#End If
Resume Saida
End Sub