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]Importar dados Excel

    Compartilhe
    avatar
    abjinfo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 02/07/2015

    [Resolvido]Importar dados Excel

    Mensagem  abjinfo em 28/2/2018, 19:59

    Olá Forum!

    Eu peguei a contribuição do Alexandre Neves para importação de dados do Excel, que funcionou perfeitamente para uma tabela.
    Bom copiei e alterei os campos para importar para outra tabela e está dando este erro abaixo.
    Já conferi os campos e não tem erro. Será que tem limitação de campos?


    Erro em tempo de execução 3061
    Parâmetros insuficientes. Eram esperados2.

    Estou postando o código abaixo para ser analisado. Provavelmente eu não estou vendo o erro.

    Obrigado.

    Ps.. Vou posta em Zip, pois não consigo colar aqui.
    Anexos
    ImportaçãoExcel.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (2 Kb) Baixado 25 vez(es)
    avatar
    wearaujo
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 04/02/2010

    Re: [Resolvido]Importar dados Excel

    Mensagem  wearaujo em 5/3/2018, 01:08

    Amigão eu vi que você tem muitos campos na tabela, confirme o nome de todos os campo este erro esta me parecendo que algum nome de campo da sua tabela esta invalido !!!

    Att.
    Wellington
    avatar
    abjinfo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 02/07/2015

    Re: [Resolvido]Importar dados Excel

    Mensagem  abjinfo em 6/3/2018, 01:24

    Olá Wellington!

    Obrigado por responde.
    Realmente é muitos campos, mais eu já chequei campo por campo e os nomes estão todos certos, como são muitos eu fiz uma impressão da tabela e depois que montei o código usei localizar para cada campo e ver se estava correto.
    O engraçado que eu já tenho para outra tabela e roda normal, lógico que neste caso são 6 campos.
    Não podemos desistir, vou refazer todo a descrição novamente até ver a onde que eu errei, rsrsrs.
    Obrigado pela atenção.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido]Importar dados Excel

    Mensagem  FabioPaes em 6/3/2018, 13:01

    Amigo, vc tem que nos ajudar a descobrir o problema!
    Veja que citou apenas o Erro. Tá, mas quando dá o erro, ele aponta exatamente a linha onde ocorreu o erro! Porque não citou aqui pra nós?

    Outra coisa, um código que já funciona não possui erros passivos de serem achados apenas lendo o código! Se ocorre o erro em um a tabela e em outra não, o problema está no Campos da tabela!

    Então, com as informações que postou é impossível sabermos com certeza onde está o erro!

    Eu acredito que está mandando um Texto para um campo da tabela onde está configurado como Número! Mas como te falei, não da pra saber com essas informações! 

    Nos ajude a te ajudar! Poste o Exemplo!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    abjinfo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 02/07/2015

    Re: [Resolvido]Importar dados Excel

    Mensagem  abjinfo em 6/3/2018, 16:35

    Olá Fabio!

    Ok, vc tem razão e quero pedir desculpas a vc e ao Wellington.

    Segue DB.

    Obrigado.
    Anexos
    ImpExpExcel.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (166 Kb) Baixado 20 vez(es)
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido]Importar dados Excel

    Mensagem  FabioPaes em 6/3/2018, 17:28

    Amigo, o código possui uma série de erros. Mas na Maioria ERROS Ortográficos mesmo! Nome de Campos que Não existem em sua tabela.

    O Erro mencionado no Tópico refere-se aos campos destacados a baixo, que não existiam na tabela:

    ccEnderecoTabccEnderecoTrab

    ccTelTabalho ccTelTrabalho


    Muita atenção na Escrita amigo!!!!


    Outra coisa, os campos de sua tabela, na sua maioria Não permitem Cumprimento Zero, ou seja tem que ter algo la... E sua Planilha Exemplo, boa parte dos campos Não estão preenchidos! Isso Ocasionará erros!

    Dica: Se vai utilizar todos os campos da tabela, então precisará listar campo a campo no SELECT, basta encurtar a Instrução e utilizar o SELECT * FROM NOMETABELA

    Veja o Código a Baixo, esta funcionando no exemplo enviado, ressalvo os campos em branco...




    Código:
    Private Sub btnImportarCli_Click()
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   código criado por Alexandre Neves, do Fórum MaximoAccess                                                '
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim rst As DAO.Recordset, LivroExcel, Linha As Integer

    CurrentDb.Execute "DELETE * FROM tbl_Clientes;"
    Set rs = CurrentDb.OpenRecordset("tbl_Clientes")

    'criar ligação com excel
    Set LivroExcel = CreateObject("Excel.Application")
    LivroExcel.workbooks.Open CurrentProject.Path & "\TransmiteArquivo\tbl_Clientes.xlsx"

    'criar recordet
    Set rst = CurrentDb.OpenRecordset("SELECT * FROM tbl_Clientes")
    'cria novo registo na tabela e importa do excel
    Linha = 2
    Do While LivroExcel.cells(Linha, 1)
    rst.AddNew
    rst("ccVarCli") = LivroExcel.cells(Linha, 1)
    rst("ccTipCli") = LivroExcel.cells(Linha, 2)
    rst("cvCodEmp") = LivroExcel.cells(Linha, 3)
    rst("ccIndustrial") = LivroExcel.cells(Linha, 4)
    rst("ccLimpeza") = LivroExcel.cells(Linha, 5)
    rst("ccDescriçãoPar") = LivroExcel.cells(Linha, 6)
    rst("ccNomCli") = LivroExcel.cells(Linha, 7)
    rst("ccNomFan") = LivroExcel.cells(Linha, 8)
    rst("ccNomCon") = LivroExcel.cells(Linha, 9)
    rst("ccEndereco") = LivroExcel.cells(Linha, 10)
    rst("ccBairro") = LivroExcel.cells(Linha, 11)
    rst("ccCidade") = LivroExcel.cells(Linha, 12)
    rst("ccCidadeCod") = LivroExcel.cells(Linha, 13)
    rst("ccNumero") = LivroExcel.cells(Linha, 14)
    rst("ccEstado") = LivroExcel.cells(Linha, 15)
    rst("ccCep") = LivroExcel.cells(Linha, 16)
    rst("ccTelefone") = LivroExcel.cells(Linha, 17)
    rst("ccCelular") = LivroExcel.cells(Linha, 18)
    rst("ccFax") = LivroExcel.cells(Linha, 19)
    rst("ccCGC") = LivroExcel.cells(Linha, 20)
    rst("ccInsEst") = LivroExcel.cells(Linha, 21)
    rst("ccInsMun") = LivroExcel.cells(Linha, 22)
    rst("ccCCP") = LivroExcel.cells(Linha, 23)
    rst("ccResponsavel") = LivroExcel.cells(Linha, 24)
    rst("ccCPFResp") = LivroExcel.cells(Linha, 25)
    'Tratamento para so tentar colocar valor se for data
    If IsDate(LivroExcel.cells(Linha, 26)) Then
        rst("cdDatNasc") = LivroExcel.cells(Linha, 26)
    End If
    rst("ccNaturalidade") = LivroExcel.cells(Linha, 27)
    rst("ccEstadoCivil") = LivroExcel.cells(Linha, 28)
    rst("ccNomConjugue") = LivroExcel.cells(Linha, 29)
    rst("ccEnderecoCob") = LivroExcel.cells(Linha, 30)
    rst("ccBairroCob") = LivroExcel.cells(Linha, 31)
    rst("ccTipoRes") = LivroExcel.cells(Linha, 32)
    rst("ccTempoRes") = LivroExcel.cells(Linha, 33)
    rst("ccTipoCon") = LivroExcel.cells(Linha, 34)
    rst("ccTempoCon") = LivroExcel.cells(Linha, 35)
    rst("ccEmail") = LivroExcel.cells(Linha, 36)
    rst("ccLocalTrabalho") = LivroExcel.cells(Linha, 37)
    'O campo estava errado aqui
    rst("ccEnderecoTrab") = LivroExcel.cells(Linha, 38)
    'O campo estava errado aqui
    rst("ccTelTrabalho") = LivroExcel.cells(Linha, 39)
    rst("ccCargo") = LivroExcel.cells(Linha, 40)
    rst("ccApelido") = LivroExcel.cells(Linha, 41)
    rst("ccSPC") = LivroExcel.cells(Linha, 42)
    rst("ccApresentado") = LivroExcel.cells(Linha, 43)
    rst("cdDatAdm") = LivroExcel.cells(Linha, 44)
    rst("ccCTPS") = LivroExcel.cells(Linha, 45)
    rst("ccRenda") = LivroExcel.cells(Linha, 46)
    rst("ccCPF") = LivroExcel.cells(Linha, 47)
    rst("ccRG") = LivroExcel.cells(Linha, 48)
    rst("ccNomPai") = LivroExcel.cells(Linha, 49)
    rst("ccNomMae") = LivroExcel.cells(Linha, 50)
    rst("ccInfCom") = LivroExcel.cells(Linha, 51)
    rst("ccExtras") = LivroExcel.cells(Linha, 52)
    rst("ccMensagem") = LivroExcel.cells(Linha, 53)
    'Aqui tambem foi corrigido
    If IsDate(LivroExcel.cells(Linha, 54)) Then
        rst("cdDatCad") = LivroExcel.cells(Linha, 54)
    End If
    If IsDate(LivroExcel.cells(Linha, 55)) Then
        rst("cdDatUlCom") = LivroExcel.cells(Linha, 55)
    End If
    rst("ccValorManut") = LivroExcel.cells(Linha, 56)
    rst("cvCodUsu") = LivroExcel.cells(Linha, 57)
    rst("ccBloqueio") = LivroExcel.cells(Linha, 58)
    'O campo estava errado aqui
    rst("ccAtivo") = LivroExcel.cells(Linha, 59)
    rst.Update
    Linha = Linha + 1
    Loop
    'fechaexcel
    LivroExcel.Activeworkbook.Close SaveChanges:=False
    Set LivroExcel = Nothing
    'fecha rst
    Set rst = Nothing
    ' DoCmd.OpenQuery "RemuveCertDupe", acViewNormal, acEdit
    MsgBox "Tabela Cliente Importada com Sucesso!"
    End Sub


    Veja os comentários e tratamentos que fiz!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    abjinfo
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 91
    Registrado : 02/07/2015

    Re: [Resolvido]Importar dados Excel

    Mensagem  abjinfo em 6/3/2018, 18:51

    Fabio!

    Muito obrigado pela dura, rsrsrs.

    Eu não sabia que tinha que dar tratamento em data, aprendi mais uma sobre os campos em brancos vou olhar melhor.

    Resolvido Embarassed

    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3904
    Registrado : 14/08/2013

    Re: [Resolvido]Importar dados Excel

    Mensagem  FabioPaes em 6/3/2018, 19:04

    A questão é que o Campo data, esta na tabela, setado como Data! Então, se vc pegar um valor da planilha do Excel, que possui qualquer coisa diferente de uma data (Texto, números ou Valores Nulos "") e tenta colocar nesse campo, dará problema de Conversão de valores, pois o Access testará converter esse valor para uma data! Então ocorre o Erro. Retire o Tratamento e faça um Teste para ver o Erro apresentado.

    Grato pelo retorno e até a próxima se Deus quiser!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

      Data/hora atual: 24/9/2018, 15:02