MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Compartilhe

    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 15:55

    Boa Tarde pessoal,

    O fórum tem me ajudado muito no meu projeto, mas estou tentando fazer algo que não consegui encontrar exemplos aqui.

    Suponhamos que eu tenha uma tabela com 3 campos, cidade, estado e pais, e esses campos estejas preenchido com alguns dados.

    Gostaria de exportar esses dados para uma tabela do Excel, porém, cada campo para células especificas.

    Por Exemplo, o que estiver no campo cidade, vai para as células A1 até a A500;
    O que estiver no campo estado, vai para a células C15 até a C600;
    e o campo pais vai para a células G80 até G956;

    Isso é só um exemplo, para ficar mais fácil de entender.

    Porém se existir alguma maneira de fazer isso eu idia adaptar ao meu banco de dados.

    Desde já agradeço

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 16:35

    Há vários exemplos de exportação de uma tabela para o Excel no fórum. Tente adaptar os que tem objetos declarados como Recordset. Você pode fazer um loop pelo recordset e ir adicionando à planilha. Se a linha da planilha começa em 53 por exemplo, você pode fazer algo assim no loop:

    Código:
    Dim N As Double

    Do While Not rs.EOF
        oExcel.Range("A" & N + 53) = rs!Cidade
        oExcel.Range("B" & N + 53) = rs!Estado
        oExcel.Range("C" & N + 53) = rs!Pais
        rs.MoveNext
        N = N + 1
    Loop


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 17:14

    Muito Obrigado pela sua ajuda Criquio;

    Quero pedir desculpas pois ainda sou amador no Access, e algumas coisas eu ainda não compreendo corretamente.

    Bom entendi seu código, e coloquei ele em um botão no meu formulário, porém, como era de se esperar, ele não executou corretamento, porque eu deveria inserir alguns comandos antes que ele executasse.

    Então peguei um código do colega João Paulo aqui do fórum, que está funcionando, e tentei aproveitar a parte inicial dele, mas mesmo assim não funcionou.

    Segue o código que tentei unir com o seu.

    Código:
    'By JPaulo ® Maximo Access
    Dim rst As DAO.Recordset, strSQL As String, strLivro As String, xls As Object
    Set xls = CreateObject("Excel.Application")
    strLivro = CurrentProject.Path & "\teste.xls"
    xls.Workbooks.Open (strLivro)
    xls.Visible = True
    strSQL = "SELECT * FROM Cad_Protocolo_Con;"
    Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
    Dim N As Double

    Do While Not rs.EOF
        oExcel.Range("A" & N + 53) = rs!Cidade
        oExcel.Range("B" & N + 53) = rs!Estado
        oExcel.Range("C" & N + 53) = rs!Pais
        rs.MoveNext
        N = N + 1
    Loop
    Set xls = Nothing

    End Sub


    Ele da um erro, falando que o Objeto é obrigatório, e quando eu clico em Depurar, essa linha que está marcada de amarelo "Do While Not rs.EOF"

    Você saberia me ajudar a resolver esse problema?

    Obrigado.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 18:32

    Tente algo assim:

    Código:
        Dim rs As Recordset, N As Integer, oApp As Object

        Set rs = CurrentDb.OpenRecordset("NomeDaTabela")
        Set oApp = CreateObject("Excel.Application")

        oApp.workbooks.Open CurrentProject.Path & "\Nome do arquivo.xls"
        oApp.Visible = False
        oApp.Worksheets("Plan1").Activate

        Do While Not rs.EOF
            oApp.ActiveSheet.Range("A" & N + 53) = rs!cidade
            oApp.ActiveSheet.Range("B" & N + 53) = rs!estado
            oApp.ActiveSheet.Range("C" & N + 53) = rs!pais
            rs.MoveNext
            N = N + 1
        Loop

        oApp.ActiveWorkbook.Save

        MsgBox "Pronto"

        rs.Close
        Set rs = Nothing

        oApp.Application.Quit
        Set oApp = Nothing

    É preciso marcar a referência ao Microsoft Excel.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 18:52

    Obrigado Pela Ajuda Criquio,

    Agora ele está mostrando a seguinte mensagem de erro. "Erro em tempo de execução '13': Tipos incompatíveis

    E quando Clico em Depurar, ele destaca está linha: Set rs = CurrentDb.OpenRecordset("Cad_Protocolo_Con")

    No caso Cad_Protocolo_Con é o nome da minha tabela que desejo exportar.

    Sabe o que pode ser?

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 19:05

    Esse underline no nome é porque tem espaços no nome da tabela tipo "Cad Protocolo Con" ou o nome da tabela está mesmo com underline? Se o nome tiver espaços, tente retirá-los alterando para CadProtocoloCon. E você marcou a referência do Microsoft Excel?


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 19:13

    Sim, o nome da tabela possui os underline, ele é exatamente desse jeito que está digitado ai.

    Quanto as Referencias eu selecionei a Microsoft Excel 15.0 Object Libray, conforme imagem abaixo.

    Teria mais alguma solução?

    [Você precisa estar registrado e conectado para ver esta imagem.]

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 19:37

    Poste o código completo para analisarmos melhor.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 19:38

    Segue o Código Criquio;

    Código:
    Private Sub Comando3_Click()
        Dim rs As Recordset, N As Integer, oApp As Object

        Set rs = CurrentDb.OpenRecordset("Cad_Protocolo_Con")
        Set oApp = CreateObject("Excel.Application")
        oApp.Workbooks.Open CurrentProject.Path & "\teste.xls"
        oApp.Visible = False
        oApp.Worksheets("Plan1").Activate

        Do While Not rs.EOF
            oApp.ActiveSheet.Range("A" & N + 53) = rs![Protocolo:]
            rs.MoveNext
            N = N + 1
        Loop

        oApp.ActiveWorkbook.Save

        MsgBox "Pronto"

        rs.Close
        Set rs = Nothing

        oApp.Application.Quit
        Set oApp = Nothing

    End Sub

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 21:18

    rs![Protocolo:]

    Existe mesmo esses dois pontos no final do nome do campo? Se sim, tente retirá-lo. Tambem pode retirar os colchetes. E a tabela está no próprio banco ou está em um backend separado do arquivo do formulário? Se estiver separado e desvinculado, terá que passar o caminho do backend.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 21:50

    Olá Criquio,

    Fiz as alterações que você sugeriu, mas o erro persiste.

    Segue um BD de teste para facilitar o entendimento.

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 22:27

    Tente criar um banco novo e importar o formulário e a tabela para esse banco. Não se esquecendo de referenciar o Word novamente.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


    pengo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 82
    Registrado : 10/12/2013

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  pengo em Qui 16 Jan 2014, 22:41

    Olá Criquio,

    Muito Obrigado pela sua ajuda, refiz o BD novamente, desde o inicio, e funcionou, ainda não descobri porque no meu BD não está funcionando, mas isso é um detalhe que logo eu resolvo.

    O importante é que está funcionando perfeitamente, graças a você.

    Muito Obrigado novamente, e vou deixar o BD aqui, caso alguém tenha a mesma dúvida que eu.

    Obrigado

    criquio
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Exportar cada campo de uma tabela para uma célula especifica no Excel

    Mensagem  criquio em Qui 16 Jan 2014, 22:44

    Isso acontece porque o banco pode estar com alguma referência AUSENTE. Nesse caso, basta desmarcar essa referência. Ou pode ser algum problema irreversível. Nesse caso, só mesmo importando tudo para um banco novo.


    .................................................................................
    Meu novo site: [Você precisa estar registrado e conectado para ver este link.]

    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.


      Data/hora atual: Sab 10 Dez 2016, 06:54