MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Botão para gerar documentos Word

    Compartilhe
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 03/08/2016

    [Resolvido]Botão para gerar documentos Word

    Mensagem  teboman em Seg 15 Maio 2017, 14:21

    Boa tarde professores Very Happy vocês me ajudam muito todo dia, e desculpem minha falta de conhecimento em VBA, mas estou necessitando fazer alguma coisas e estou aprendendo a cada dia.
    Hoje estou tentando fazer um botão que manda dados de um formulario com dados de uma tabela para preencher uma procuração com nome clientes e dados peguei um código aqui mesmo no forum para fazer isso, porem cada hora da um erro e não consigo concluir a operação do botão. Segue o Codigo adaptado que peguei em algum lugar aqui do forum.

    Private Sub BtProc_Click()
    #Const DESENV = -1

    On Error GoTo TrataErro
    Dim oApp As Object 'Cria uma variável objeto
    Dim strSQL As String

    ' 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 ("C:\Users\Junior\Google Drive\Aprendizado\Procuração Pessoa Física.doc")
    'Move cada campo para o indicador definido no documento
    .ActiveDocument.Bookmarks("txtCliente").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cliente))
    .ActiveDocument.Bookmarks("txtNascimento").Select
    .Selection.Text = (CStr(Forms!FormClientes!Nascimento))
    .ActiveDocument.Bookmarks("txtEstadoCivil").Select
    .Selection.Text = (CStr(Forms!FormClientes!EstadoCivil))
    .ActiveDocument.Bookmarks("Profissao").Select
    .Selection.Text = (CStr(Forms!FormClientes!Profissao))
    .ActiveDocument.Bookmarks("txtNomeMae").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDaMae))
    .ActiveDocument.Bookmarks("txtNomePai").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDoPai))
    .ActiveDocument.Bookmarks("txtRg").Select
    .Selection.Text = (CStr(Forms!FormClientes!RG))
    .ActiveDocument.Bookmarks("txtCpf").Select
    .Selection.Text = (CStr(Forms!FormClientes!CIC))
    .ActiveDocument.Bookmarks("txtCtps").Select
    .Selection.Text = (CStr(Forms!FormClientes!CTPS))
    .ActiveDocument.Bookmarks("txtSerie").Select
    .Selection.Text = (CStr(Forms!FormClientes!Série))
    .ActiveDocument.Bookmarks("txtPis").Select
    .Selection.Text = (CStr(Forms!FormClientes!PIS))
    .ActiveDocument.Bookmarks("txtEndereço").Select
    .Selection.Text = (CStr(Forms!FormClientes!Endereço))
    .ActiveDocument.Bookmarks("txtBairro").Select
    .Selection.Text = (CStr(Forms!FormClientes!Bairro))
    .ActiveDocument.Bookmarks("txtCidade").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cidade))
    .ActiveDocument.Bookmarks("txtUf").Select
    .Selection.Text = (CStr(Forms!FormClientes!UF))
    .ActiveDocument.Bookmarks("txtCep").Select
    .Selection.Text = (CStr(Forms!FormClientes!CEP))
    .ActiveDocument.Bookmarks("txtTelefone").Select
    .Selection.Text = (CStr(Forms!FormClientes!Telefone))

    'Salva o arquivo gerado
    .ActiveDocument.SaveAs "C:\Users\Junior\Google Drive\Aprendizado\Procuração Pessoa Física teste.doc"


    MsgBox "Documento salvo com sucesso...", vbInformation
    'Fecha o documento
    .ActiveDocument.Close
    End With
    'Fecha o Word
    oApp.Quit
    Dim x As String
    x = "C:\Users\Junior\Google Drive\Aprendizado\Procuração Pessoa Física.doc" & "Clientes " & Replace(Me.Cliente, "/", "-") & " " & CurrentUser() & ".doc"

    Dim Word As New Word.Application
    With Word
    .Documents.Open x
    .Visible = True
    .WindowState = wdWindowStateMaximize
    End With

    'Libera a memória
    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 "FormClientes - BtProc_Click" & vbCrLf & Err.Description, vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
    #If DESENV Then
    oApp.Quit
    Set oApp = Nothing
    Stop
    Resume
    #End If
    Resume Saida
    End Sub


    O diretório está no google drive pois trabalho em varios lugares. Porem ao clicar no botão ele da erro FormCliente - BtProc_Click... O membro solicitado da coleção não existe. E ele para em Stop (Destacado em amarelo no codigo)
    Oque estou fazendo de errado e como faço pra corrigir e novamente, me desculpem pela minha falta de conhecimento e agradeço desde já.
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 03/08/2016

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  teboman em Qua 31 Maio 2017, 20:13

    Alguém para me dar uma força? me perdoem pela ignorância.
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 03/08/2016

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  teboman em Ter 06 Jun 2017, 15:59

    Resolvi o problema mas não sei como, peguei um código no site da microsoft e fui alterando até dar certo, segue o link que me ajudou muito

    support.microsoft.com/pt-br/help/210271/how-to-send-the-current-record-to-word-2000-with-automation

    que também peguei em algum lugar no fórum e o código ficou da seguinte forma mas creio que vá ser necessário algumas alterações que ainda não descobri como fazer tipo ao fazer a mesclagem trazer o word pra tela ao invés de precisar clicar na barra de tarefas para o usuário verificar todas as informações mas já já eu acho o que for necessário, caso alguém saiba por favor me ajudar :

    Private Sub BtProc_Click()

    On Error GoTo MergeButton_Err

    Dim objWord As Word.Application
    Set objWord = CreateObject("Word.Application")
    With objWord
    'Make the application visible.
    .Visible = True
    'Open the document.
    .Documents.Open ("C:\Advocacia\Procuração Pessoa Fisica.doc")
    .ActiveDocument.Bookmarks("txtCliente").Select
    .Selection.Text = (CStr(Me.Cliente))
    .ActiveDocument.Bookmarks("txtNascimento").Select
    .Selection.Text = (CStr(Forms!FormClientes!Nascimento))
    .ActiveDocument.Bookmarks("txtNacionalidade").Select
    .Selection.Text = (CStr(Forms!FormClientes!Nacionalidade))
    .ActiveDocument.Bookmarks("txtEstadoCivil").Select
    .Selection.Text = (CStr(Forms!FormClientes!EstadoCivil))
    .ActiveDocument.Bookmarks("txtProfissao").Select
    .Selection.Text = (CStr(Forms!FormClientes!Profissao))
    .ActiveDocument.Bookmarks("txtNomeMae").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDaMae))
    .ActiveDocument.Bookmarks("txtNomePai").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDoPai))
    .ActiveDocument.Bookmarks("txtRg").Select
    .Selection.Text = (CStr(Forms!FormClientes!RG))
    .ActiveDocument.Bookmarks("txtCpf").Select
    .Selection.Text = (CStr(Forms!FormClientes!CIC))
    .ActiveDocument.Bookmarks("txtCtps").Select
    .Selection.Text = (CStr(Forms!FormClientes!CTPS))
    .ActiveDocument.Bookmarks("txtSerie").Select
    .Selection.Text = (CStr(Forms!FormClientes!Série))
    .ActiveDocument.Bookmarks("txtPis").Select
    .Selection.Text = (CStr(Forms!FormClientes!PIS))
    .ActiveDocument.Bookmarks("txtEndereco").Select
    .Selection.Text = (CStr(Forms!FormClientes!Endereço))
    .ActiveDocument.Bookmarks("txtBairro").Select
    .Selection.Text = (CStr(Forms!FormClientes!Bairro))
    .ActiveDocument.Bookmarks("txtCidade").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cidade))
    .ActiveDocument.Bookmarks("txtUf").Select
    .Selection.Text = (CStr(Forms!FormClientes!UF))
    .ActiveDocument.Bookmarks("txtCep").Select
    .Selection.Text = (CStr(Forms!FormClientes!CEP))
    .ActiveDocument.Bookmarks("txtTelefone").Select
    .Selection.Text = (CStr(Forms!FormClientes!Telefone))
    .ActiveDocument.Bookmarks("txtCliente2").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cliente))

    objWord.Documents("Procuração Pessoa Fisica.doc").Activate

    'Print the document in the foreground so Microsoft Word will not close
    'until the document finishes printing.
    'objWord.ActiveDocument.PrintOut Background:=False

    'Close the document without saving changes.
    'objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

    'Quit Microsoft Word and release the object variable.
    'objWord.Quit
    'Set objWord = Nothing
    Exit Sub

    End With

    MergeButton_Err:
    'If a field on the form is empty, remove the bookmark text, and
    'continue.
    If Err.Number = 94 Then
    objWord.Selection.Text = ""
    Resume Next
    End If
    End Sub


    Obrigado pelo espaço.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4534
    Registrado : 15/03/2013

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  ahteixeira em Ter 06 Jun 2017, 16:08

    Olá Gilberto Junior,
    Que bom que resolveu!

    Obrigado pelo retorno.
    Os utilizadores do forum agradecem.

    Abraço
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 03/08/2016

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  teboman em Qua 07 Jun 2017, 17:46

    Eu que agradeço, cada dia uso mais esse forum. A propósito consegui resolver o caso do word vir para primeiro plano, simplesmente coloquei AppActive = "Word" logo apos de .Visible = True
    No exemplo que postei acima só deixei comentado a questão de imprimir o documento automaticamente pois as vezes é necessário que o usuário altere coisas no documento.
    Tudo se resolvendo.

    jntrindade
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 253
    Registrado : 07/12/2009

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  jntrindade em Qua 07 Jun 2017, 19:08

    boa tarde, se nao fosse pedir muito teria como deixar disponivel um pequeno exemplo ai. Very Happy Very Happy

    Desde ja agradeço.
    avatar
    teboman
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 48
    Registrado : 03/08/2016

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  teboman em Qua 07 Jun 2017, 19:20

    Com muito prazer, o codigo final ficou da seguinte forma.

    Private Sub BtProc_Click()

    On Error GoTo MergeButton_Err

    Dim objWord As Word.Application
    Set objWord = CreateObject("Word.Application")
    With objWord
    'Deixa o aplicativo visivel.
    .Visible = True
    AppActivate "Word" 'Traz o Word para o primeiro plano

    'Abre o documento modelo com os indicadores para os campos desejados e deixa o documento como somente leitura.
    .Documents.Open FileName:="C:\Advocacia\Procuração Pessoa Fisica.doc", ReadOnly:=True

    .ActiveWindow.WindowState = wdWindowStateMaximize 'Maximiza o documento.

    'Indica qual campo e qual indicador substituir.
    .ActiveDocument.Bookmarks("txtCliente").Select
    .Selection.Text = (CStr(Me.Cliente))
    .ActiveDocument.Bookmarks("txtNascimento").Select
    .Selection.Text = (CStr(Forms!FormClientes!Nascimento))
    .ActiveDocument.Bookmarks("txtNacionalidade").Select
    .Selection.Text = (CStr(Forms!FormClientes!Nacionalidade))
    .ActiveDocument.Bookmarks("txtEstadoCivil").Select
    .Selection.Text = (CStr(Forms!FormClientes!EstadoCivil))
    .ActiveDocument.Bookmarks("txtProfissao").Select
    .Selection.Text = (CStr(Forms!FormClientes!Profissao))
    .ActiveDocument.Bookmarks("txtNomeMae").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDaMae))
    .ActiveDocument.Bookmarks("txtNomePai").Select
    .Selection.Text = (CStr(Forms!FormClientes!NomeDoPai))
    .ActiveDocument.Bookmarks("txtRg").Select
    .Selection.Text = (CStr(Forms!FormClientes!RG))
    .ActiveDocument.Bookmarks("txtCpf").Select
    .Selection.Text = (CStr(Forms!FormClientes!CIC))
    .ActiveDocument.Bookmarks("txtCtps").Select
    .Selection.Text = (CStr(Forms!FormClientes!CTPS))
    .ActiveDocument.Bookmarks("txtSerie").Select
    .Selection.Text = (CStr(Forms!FormClientes!Série))
    .ActiveDocument.Bookmarks("txtPis").Select
    .Selection.Text = (CStr(Forms!FormClientes!PIS))
    .ActiveDocument.Bookmarks("txtEndereco").Select
    .Selection.Text = (CStr(Forms!FormClientes!Endereço))
    .ActiveDocument.Bookmarks("txtBairro").Select
    .Selection.Text = (CStr(Forms!FormClientes!Bairro))
    .ActiveDocument.Bookmarks("txtCidade").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cidade))
    .ActiveDocument.Bookmarks("txtUf").Select
    .Selection.Text = (CStr(Forms!FormClientes!UF))
    .ActiveDocument.Bookmarks("txtCep").Select
    .Selection.Text = (CStr(Forms!FormClientes!CEP))
    .ActiveDocument.Bookmarks("txtTelefone").Select
    .Selection.Text = (CStr(Forms!FormClientes!Telefone))
    .ActiveDocument.Bookmarks("txtCliente2").Select
    .Selection.Text = (CStr(Forms!FormClientes!Cliente))
    objWord.Documents("Procuração Pessoa Fisica.doc").Activate

    'Imprime o documento antes de fechar o word, esta comentando pois não quero imprimir antes de verificar as informação.
    'objWord.ActiveDocument.PrintOut Background:=False

    'Fecha sem salvar alterações.
    'objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

    'Fecha o word.
    'objWord.Quit
    'Set objWord = Nothing
    Exit Sub

    End With

    MergeButton_Err:
    'Se o campo estiver vazio, remove o texto indicador e continua
    If Err.Number = 94 Then
    objWord.Selection.Text = ""
    Resume Next
    Else
    MsgBox Err.Number & vbCr & Err.Description
    End If
    End Sub

    Os campos que estão comentando não são necessários para o meu ambiente.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4534
    Registrado : 15/03/2013

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  ahteixeira em Qui 08 Jun 2017, 10:54

    Olá Jorge Trindade,
    Se pretende exemplo em base de dados, veja por exemplo o tópico abaixo:
    [Você precisa estar registrado e conectado para ver este link.]

    Abraço a todos


    Última edição por ahteixeira em Dom 11 Jun 2017, 15:31, editado 1 vez(es)

    jntrindade
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 253
    Registrado : 07/12/2009

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  jntrindade em Qui 08 Jun 2017, 21:03

    boa tarde, era isso mesmo amigão parabens pelo belo exemplo. Gostei

    obrigado
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 4534
    Registrado : 15/03/2013

    Re: [Resolvido]Botão para gerar documentos Word

    Mensagem  ahteixeira em Sex 09 Jun 2017, 15:31

    cheers

      Data/hora atual: Seg 20 Nov 2017, 17:20