MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]Melhorar transferencia Access x Word

    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Melhorar transferencia Access x Word

    Mensagem  eduhp 22/9/2012, 19:59

    Estou usando esse código para exportar dados do Access para um arquivo do Word.
    Do modo que está, todos os registros da tabela são armazenados em um string que então é inserida em uma tabela do Word.
    O problema que toda essa string fica em apenas uma linha da tabela e eu queria que cada registro da tabela ocupasse uma linha na tabela do Access.
    Estava tentando utilizar o comando .Selection.InsertRowsBelow (1) mas não consegui encontrar um lugar certo para inserir no código.

    Private Sub Comando40_Click()
    Dim rsCli As Recordset

    Set rsCli = CurrentDb.OpenRecordset("SELECT * FROM tblPendencias WHERE Indice=" & Me.Vistoria)

    Dim DocWord As Object
    Dim vArea As String, vSetor As String, vDisciplina As String, vDocumento As String
    Dim vPendencia As String, vPrioridade As String, vCadastro As String, vExecucao As String
    Dim vAtualizacao As String, vFechamento As String, vRealizado As String

    Set DocWord = CreateObject("Word.Application")
    With DocWord
    .Visible = False

    .Documents.Add Template:=CurrentProject.Path & "\baseTermobm.docx", NewTemplate:=False, DocumentType:=0
    '============================================================================================================
    '.ActiveDocument.Bookmarks("DataHora").Select
    ' .Selection.Text = Format(Now, "General Date")

    '.ActiveDocument.Bookmarks("area1").Select
    '.Selection.Text = rsCli!ÁreaSítio

    '.ActiveDocument.Bookmarks("setor1").Select
    '.Selection.Text = rsCli!Setor

    '.ActiveDocument.Bookmarks("area2").Select
    '.Selection.Text = rsCli!ÁreaSítio

    '.ActiveDocument.Bookmarks("setor2").Select
    ' .Selection.Text = rsCli!Setor

    '============================================================================================================

    Do While Not rsCli.EOF

    'vArea = vArea & vbCrLf & rsCli!ÁreaSítio
    'vSetor = vSetor & vbCrLf & rsCli!Setor

    If vPendencia = "" Then

    vPendencia = rsCli!Pendência
    vDisciplina = rsCli!Disciplina
    vDocumento = rsCli!DocumentoReferência
    vPrioridade = rsCli!Prioridade
    vCadastro = rsCli!DataCadastro
    vExecucao = rsCli!PrazoExecução
    vAtualizacao = rsCli!DataAtualização
    vFechamento = rsCli!DataFechamento
    vRealizado = rsCli!Realizado

    Else

    vDisciplina = vDisciplina & vbCrLf & rsCli!Disciplina
    vDocumento = vDocumento & vbCrLf & rsCli!DocumentoReferência
    vPendencia = vPendencia & vbCrLf & rsCli!Pendência
    vPrioridade = vPrioridade & vbCrLf & rsCli!Prioridade
    vCadastro = vCadastro & vbCrLf & rsCli!DataCadastro
    vExecucao = vExecucao & vbCrLf & rsCli!PrazoExecução
    vAtualizacao = vAtualizacao & vbCrLf & rsCli!DataAtualização
    vFechamento = vFechamento & vbCrLf & rsCli!DataFechamento
    vRealizado = vRealizado & vbCrLf & rsCli!Realizado
    End If

    rsCli.MoveNext

    Loop

    .ActiveDocument.Bookmarks("pendencia").Select
    .Selection.Text = vPendencia

    .ActiveDocument.Bookmarks("disciplina").Select
    .Selection.Text = vDisciplina

    .ActiveDocument.Bookmarks("documento").Select
    .Selection.Text = vDocumento

    .ActiveDocument.Bookmarks("prioridade").Select
    .Selection.Text = vPrioridade

    .ActiveDocument.Bookmarks("cadastro").Select
    .Selection.Text = vCadastro

    .ActiveDocument.Bookmarks("prazo").Select
    .Selection.Text = vExecucao

    .ActiveDocument.Bookmarks("atualizacao").Select
    .Selection.Text = vAtualizacao

    .ActiveDocument.Bookmarks("fechamento").Select
    .Selection.Text = vFechamento

    .ActiveDocument.Bookmarks("realizado").Select
    .Selection.Text = vRealizado





    '============================================================================================================
    .ActiveDocument.SaveAs CurrentProject.Path & "\" & "testetetes" & ".docx"

    rsCli.Close
    Set rsCli = Nothing

    .ActiveDocument.Close
    End With
    DocWord.Quit

    Set DocWord = Nothing


    DoCmd.RunMacro "termoOK"
    End Sub


    Já aproveito para tirar outra dúvida: é muito complicado programar para que o Access gere um relatório, exporte para PDF e então dentro do Word eu insiro esse PDF. Seria melhor do que o jeito que estou fazendo agora?

    Desde já, muito obrigado!
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  criquio 22/9/2012, 20:52

    Para inserir linhas, você precisa colocar o comando antes de cada loop para ir inserindo as linhas. A parte de exportar para PDF dentro do Word eu não entendi.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidad
    Convidado


    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  Convidad 22/9/2012, 21:11

    é só tirar o rsCli.MoveNext e o Loop e colocar a seguir ao ultimo ActiveDocument.Bookmarks


    .ActiveDocument.Bookmarks("realizado").Select
    .Selection.Text = vRealizado
    rsCli.MoveNext
    Loop
    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  eduhp 22/9/2012, 21:36

    Ricardo, fiz do modo como você sugeriu e não funcionou. As linhas não foram adicionadas na tabela e alguns registros ficaram repetidos.

    Criquio: a minha idéia era gerar um relatório no Access, exportar para PDF e então no meu arquivo do word inserir esse pdf.
    Quando coloco o comando .Selection.InsertRowsBelow (1) antes do Loop, da o erro 4605 - This method or property is not available because some or all of the object does not refer to a table.
    avatar
    Convidad
    Convidado


    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  Convidad 22/9/2012, 21:45

    http://msdn.microsoft.com/en-us/library/office/ff838718.aspx
    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  eduhp 22/9/2012, 23:58

    Ainda não consegui.
    Na lógica era pra funcionar. Pensei assim: abro o recordset, declaro o valor de cada campo para sua respectiva string, insiro essas strings na tabela, adiciono uma nova linha e então avanço para o próximo registro - rodando até que o recordset termine.
    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  eduhp 23/9/2012, 00:01

    Bom, acabei de ver o erro na lógica. Estou inserindo as strings em um bookmark, porém esse bookmark sempre estará na primeira linha. Como contornar esse problema?
    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  eduhp 24/9/2012, 23:32

    Alguma sugestão?
    avatar
    eduhp
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 41
    Registrado : 12/06/2012

    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  eduhp 5/10/2012, 02:01

    Consegui fazer funcionar!
    Código a seguir:

    Dim x As Integer, i As Integer, j As Integer
    'executo um recordcount para saber quantos linhas deverão ser adicionadas
    rsCli.MoveFirst
    rsCli.MoveLast
    rsCli.MoveFirst
    x = rsCli.RecordCount
    'seleciono primeira célula da primeira linha já existente
    .ActiveDocument.Tables(2).Cell(2, 1).Select

    For i = 1 To x
    For j = 1 To 9
    'adição dos indicadores
    With .ActiveDocument.Bookmarks
    .Add Range:=Selection.Range, Name:="bm" & i & j
    .DefaultSorting = wdSortByName
    .ShowHidden = True
    End With



    If j = 1 Then
    vPendencia = rsCli!Pendência

    'adiciono a string contendo o valor do campo
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vPendencia
    Else
    End If


    If j = 2 Then
    vDisciplina = rsCli!Disciplina

    'adiciono a string contendo o valor do campo
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vDisciplina
    Else
    End If


    If j = 3 Then
    vDocumento = rsCli!DocumentoReferência

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vDocumento
    Else
    End If


    If j = 4 Then
    vPrioridade = rsCli!Prioridade

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vPrioridade

    Else
    End If


    If j = 5 Then
    vCadastro = rsCli!DataCadastro

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vCadastro
    Else
    End If



    If j = 6 Then
    vExecucao = rsCli!PrazoExecução

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vExecucao

    Else
    End If


    If j = 7 Then
    vAtualizacao = rsCli!DataAtualização

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vAtualizacao
    Else
    End If


    If j = 8 Then
    vFechamento = rsCli!DataFechamento

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vFechamento
    Else
    End If


    If j = 9 Then
    vRealizado = rsCli!Realizado

    'adiciono a string contendo o valor do campo do primeiro registro
    .ActiveDocument.Bookmarks("bm" & i & j).Select
    .Selection.Text = vRealizado
    Else
    End If



    'desloco a seleção uma célula para a direita
    .Selection.MoveRight unit:=wdCell, Count:=1

    Next j
    '===== pendências adicionadas serão marcadas como emitidas =====

    With rsCli
    .Edit
    !TVEmitido = True
    .Update
    End With

    rsCli.MoveNext
    Next i

    Abraços!

    Conteúdo patrocinado


    [Resolvido]Melhorar transferencia Access x Word Empty Re: [Resolvido]Melhorar transferencia Access x Word

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 16:56