Olá!
Falta um pequeno detalhe para terminar um trabalho que vai me poupar tempo para gerar atestados... Preciso de uma grande ajuda.
Uso access 2016.
no banco de dados, existe um formulário com os dados, ao clicar em exportar para word, ele pega os dados do formulário, abre um arquivo modelo de word, e cola nos indicadores do word, salva um arquivo novo com o atestado da pessoa. Os códigos usei do fórum, adaptei e está funcionando perfeitamente.
Eu preciso transformar em pdf, pode até excluir o arquivo criado em word, importante é o pdf.
Já existe um tópico semelhante, mas na época não tinha solução, talvez hoje tenha.
o código do botão para abrir o arquivo modelo word e salvar o novo arquivo, segue:
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
Se tem como encaixar a exportação para pdf no código acima, pode até excluir o arquivo criado em word.
Até criei um relatório para exportar em pdf, o problema é: se eu quiser mexer uma palavra, preciso alterar o accdb p/ transformar em accde, é complicado, já com o modelo do word existente é mais fácil e rápido, por isso, preciso do modelo do word.
Se alguém já tentou fazer isso???
achei exemplo de arquivo fixo de word que exporta p/ pdf, mas não é o caso acima... não consegui evoluir com a ideia, só falta isso p/ terminar....
Se alguém souber... agradeço....
Eu coloquei esta pergunta no link: https://www.maximoaccess.com/t26126-resolvidoaccess-abrir-um-arquivo-word-docx-e-gerar-o-mesmo-em-pdf, mas já estava resolvido, então, resolvi abrir um tópico no meu nome.
abraços.
Falta um pequeno detalhe para terminar um trabalho que vai me poupar tempo para gerar atestados... Preciso de uma grande ajuda.
Uso access 2016.
no banco de dados, existe um formulário com os dados, ao clicar em exportar para word, ele pega os dados do formulário, abre um arquivo modelo de word, e cola nos indicadores do word, salva um arquivo novo com o atestado da pessoa. Os códigos usei do fórum, adaptei e está funcionando perfeitamente.
Eu preciso transformar em pdf, pode até excluir o arquivo criado em word, importante é o pdf.
Já existe um tópico semelhante, mas na época não tinha solução, talvez hoje tenha.
o código do botão para abrir o arquivo modelo word e salvar o novo arquivo, segue:
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
Se tem como encaixar a exportação para pdf no código acima, pode até excluir o arquivo criado em word.
Até criei um relatório para exportar em pdf, o problema é: se eu quiser mexer uma palavra, preciso alterar o accdb p/ transformar em accde, é complicado, já com o modelo do word existente é mais fácil e rápido, por isso, preciso do modelo do word.
Se alguém já tentou fazer isso???
achei exemplo de arquivo fixo de word que exporta p/ pdf, mas não é o caso acima... não consegui evoluir com a ideia, só falta isso p/ terminar....
Se alguém souber... agradeço....
Eu coloquei esta pergunta no link: https://www.maximoaccess.com/t26126-resolvidoaccess-abrir-um-arquivo-word-docx-e-gerar-o-mesmo-em-pdf, mas já estava resolvido, então, resolvi abrir um tópico no meu nome.
abraços.
Última edição por carmelito em 23/7/2021, 01:24, editado 1 vez(es)