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]Importar Dados do Excel No Access

    Compartilhe

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Ter 05 Ago 2014, 16:34

    Pessoal,
    boa tarde!

    Poderiam me ajudar com as minhas dúvidas abaixo:

    Estou fazendo um importe de dados do Excel para a tabela Access e este importe sera mensalmente.
    Os registros do Excel, poderão ser os mesmos já importados ou terá novos registros para inserção.


    Pergunto:
    1 - Como incluir apenas novos registros do Excel no Access, caso alguns dados já existam no Access?

    2 - Na hora do importe, se a data do registro que esta no Excel for diferente da que já consta no Access, como posso atualizar apenas esta data no Access é o restante do registro e descartado pois já existe no banco?

    3 - Quando for fazer o importe, qual o comando que posso utilizar para seja buscada a planilha da mesma pasta aonde encontra a base Access ? sem precisar digitar todo o caminho aonde se encontra a planilha?

    Bom seria isso, espero que tenha me explicado bem.

    Muito obrigado a todos.

    Bruno.

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  ahteixeira em Qua 06 Ago 2014, 11:27

    Olá,

    Verifica o tópico do link abaixo, em especial a mensagem nº 7 e 9.

    [Você precisa estar registrado e conectado para ver este link.]

    Ficamos aguardar o retorno.

    Abraço

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Qua 06 Ago 2014, 14:35

    ahteixeira

    Obrigado pelo retorno.

    Então, eu estou fazendo o meu import diferente, sem utilizar o TransferSpreadsheet pois tenho que selecionar algumas colunas apenas de uma planilha excel.

    O meu codigo de importação esta desta maneira abaixo:

    Código:


     Dim oRS As DAO.Recordset, i As Integer, j As Integer, SFile As String
        Dim oXL As Excel.Application
        Dim oWb As Excel.Workbook
        Dim oWs As Excel.Worksheet
        Dim oSelect As Excel.Range
       
       
        Set oXL = CreateObject("Excel.Application")
        SFile = Application.CurrentProject.Path & "\CONTROLE DE PROJETOS BUILD.xlsx"
       
        Set oWb = oXL.Workbooks.Open(SFile)
        Set oWs = oWb.ActiveSheet
        Set oSelect = oWs.Cells(1, 1).CurrentRegion
        Set oRS = CurrentDb.OpenRecordset("TBL_DADOS")
             
          'LOOP para inclusao dos dados do Excel para base Access
          For i = 2 To oSelect.Rows.Count
                oRS.AddNew
                  oRS.Fields(1) = oSelect.Range("A" & i)  'Descrição
                  oRS.Fields(2) = oSelect.Range("B" & i)  'Cod_PCubo
                  oRS.Fields(3) = oSelect.Range("D" & i)  'Eixo
                  oRS.Fields(4) = oSelect.Range("F" & i)  'IPM_Responsável
                  oRS.Fields(5) = oSelect.Range("G" & i)  'Data de Implantação
                  oRS.Fields(6) = oSelect.Range("H" & i)  'Status
                  oRS.Fields(10) = oSelect.Range("L" & i) 'CM_Infra
                  oRS.Fields(11) = oSelect.Range("M" & i) 'SM Santander
                  oRS.Fields(12) = oSelect.Range("N" & i) 'Detalhes do Projeto
                  oRS.Fields(13) = oSelect.Range("P" & i) 'Gerente Executivo ISBAN
                  oRS.Fields(14) = oSelect.Range("Q" & i) 'Lider Técnico ISBAN
                  oRS.Fields(15) = oSelect.Range("T" & i) 'Sigla Nova
                oRS.Update
          Next i
      oXL.Quit
      MsgBox "Dados importados com sucesso", vbInformation, "Status"

    Ele funciona certinho, mas não tenho estes seus controles.

    Será que da para adaptar os seus processos das querys neste codigo acima?

    Realmente pelo que vi é aquilo mesmo que preciso:

    Se for adicionado um registro, identificar com uma flag (SIM/NAO) para saber se o registro que acabou de ser inserido é novo.
    Se for o mesmo registro a ser importado, checar se houve alguma alteração em algum dos campos, se SIM, alterar os valores da base pelo que esta no
    Excel.
    Se for o mesmo registro já inserido não faz nada.

    Podes me ajudar ?

    Muito obrigado.

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  ahteixeira em Qua 06 Ago 2014, 16:35

    Olá,

    É apenas um exemplo e poderá ser efetuado de várias formas.
    Quanto ao teu método de importação pode ser , só não compreendi se a tabela TBL_DADOS é a tabela definitiva.
    Pois da forma que exemplifico no outro post é efetuada uma importação para uma tabela temporária e depois é utilizado consultas para efetuar as várias etapas de actualização.
    As consultas podem ser efetuadas diretamente em VBA, mas optei por chamar em VBA as consultas para ser mais fácil para os utilizadores menos experientes poderem ver como estão construídas.

    Caso seja necessária mais alguma consulta para um tratamento especial dos dados a sincronizar é só criar e acrescentar a chamada no VBA.

    Caso tenhas dificuldades, será melhor postar pequeno exemplo de excel e ficheiro de access com a tabela que pretendes atualizar (com alguns dados de exemplo).

    Abraço


    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Qui 07 Ago 2014, 03:06

    ahteixeira

    Isso mesmo, tenho apenas a tabela TBL_DADOS aonde são carregado os dados.

    Então, eu vi o seu exemplo e parece que se encaixa certinho para mim, pois tudo que você faz na sua base de exemplo é o que eu preciso fazer na minha.

    Mas como vi o seu exemplo, estou criando tmb uma tabela temporária para fazer o meu processo parecido com o seu.

    Vou tentar fazer alguma coisa aqui seguindo o seu exemplo.

    Agora se se possível, de acordo com o meu código mencionado do importe, de que forma eu poderia encaixar as suas querys ao meu código VBA para efetuar aqueles controles: "se novo insere", "se ocorrer alguma atualizacao, atualiza o campo especifico" ou se nao teve alteracao nao faz nada ?

    Poderia me dar uma luz nesta questão ?

    Muito Obrigado mais uma vez.

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  ahteixeira em Qui 07 Ago 2014, 08:39

    Olá,

    O código pode ser colocado na linha anterior ou seguinte onde tens a instrução:

      MsgBox "Dados importados com sucesso", vbInformation, "Status"

    e aproveitando do meu exemplo teria de seguida:

           'apaga temporarios
           DoCmd.RunSQL "Delete * from ExcelTmp" 'Alterar para TBL_DADOS_TMP conforme mensagem nº 9
           'importa para tabela local temporária
           DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames 'Não utilizar esta linha uma vez que optou pelo código da mensagem nº3
           'sql verifica existentes e marca com não novo
           DoCmd.OpenQuery "xls01marcaExistentes", acViewNormal, acEdit
           'sql atualiza existentes
           DoCmd.OpenQuery "xls02AtualizaExistentes", acViewNormal, acEdit
           'sql lança novos no ficheiro funcionarios
           DoCmd.OpenQuery "xls03LancaNovos", acViewNormal, acEdit
           
           MsgBox "Operação concluída.", vbInformation, ""
           
           'apaga temporarios
           DoCmd.RunSQL "Delete * from ExcelTmp" 'Alterar para TBL_DADOS_TMP conforme mensagem nº 9


    Abraço


    Última edição por ahteixeira em Qui 07 Ago 2014, 16:04, editado 5 vez(es)

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Qui 07 Ago 2014, 13:40

    ahteixeira,

    Muito obrigado, vou corrigir as minhas tabelas e trabalhar em cima dos seus itens.

    Assim que terminar e testar ja posto aqui .

    Muito Obrigado.

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Qui 07 Ago 2014, 15:02

    Atraves deste comando abaixo:

    Código:

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9"

    Ao invés de importar todas as colunas da planilha excel, tem como importar apenas algumas específicas ?

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  ahteixeira em Qui 07 Ago 2014, 15:53

    Olá,

    Parece que a importação já estava a funcionar, assim sendo acho que deverias apenas alterar para uma tabela temporária ou seja:

    Onde tens:   Set oRS = CurrentDb.OpenRecordset("TBL_DADOS")
    Deverás colocar:     Set oRS = CurrentDb.OpenRecordset("TBL_DADOS_TMP")

    (Não te esqueças de copiar a estrutura da tabela de TBL_DADOS para TBL_DADOS_TMP e acrecentar o camo NOVO

    Depois é necessário ajustar as consultas conforme pretendido. (não esquecer que o nome das tabelas e campos são diferentes do exemplo)

    Caso necessário poderás acrescentar mais consultas para tratamento da informação como pretendido.

    Depois acrescentar no código conforme exemplifiquei na mensagem nº 6

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Qui 07 Ago 2014, 20:10

    ahteixeira

    Muito obrigado, deu certinho o processo do importe ajustando igual ao seu.

    Agora se for possível:

    1 - Como posso colocar no meu formulário, um indicador dos passos que estão sendo executados, tipo: Deletado Tabela, Incluindo dados, em assim por diante?

    2 - Precisaria contar também os novos registros incluidos pela data, pois no meu banco, coloquei um campo especifico de data para que todo registro que for carregado e incluido a data que ele foi inserido.

    Poderia me ajudar em mais estas ?

    Mais uma vez obrigado.

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  ahteixeira em Sex 08 Ago 2014, 12:24

    Olá,

    Para a mensagem , podes criar um campo texto no teu form txtEstadoImportar
    No código é dizer que o campo  txtEstadoImportar = "mensagem desejada" colocar logo de seguida o comando DoEvents para atualizar o form

    Quanto à 2ª questão, acho que pode ser com a função  DCount, podes efetuar uma procura aqui no forum que não falta exemplos.

    Não se esqueça de dar o tópico como resolvido, veja link abaixo:
    [Você precisa estar registrado e conectado para ver este link.]

    Se tiveres dificuldades abre um novo tópico.

    Obrigado pelo retorno.
    Um Abraço,


    Última edição por ahteixeira em Sex 08 Ago 2014, 14:11, editado 1 vez(es)

    Brunoreiss
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 46
    Registrado : 08/03/2014

    Re: [Resolvido]Importar Dados do Excel No Access

    Mensagem  Brunoreiss em Sex 08 Ago 2014, 13:06

    Muito obrigado

    Vou testar mais estas suas dicas e precisando abro outro tópico.

    Abraços

      Data/hora atual: Sab 03 Dez 2016, 15:39