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 DO EXCEL PARA TABELA DO BD - Requerer referencia a Microsoft Office 11 Object Library

    Compartilhe

    traderboy
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 22
    Registrado : 16/01/2017

    [Resolvido]IMPORTAR DO EXCEL PARA TABELA DO BD - Requerer referencia a Microsoft Office 11 Object Library

    Mensagem  traderboy em Sab 02 Set 2017, 00:59

    Ola Pessoal,


    1. Estou com um problema para importar os dados de uma planilha Excel para uma tabela no meu BD.

    2. Utilizei os códigos VBA do SILVIO, constantes no repositório: [Você precisa estar registrado e conectado para ver este link.]

    3. Fiz as devidas alterações, mas quando tento executar, o sistema abre o VB e apresenta o erro: Erro de compilação: O tipo definido pelo usuário não foi definido. Este erro esta na linha Dim fd As FileDialog.

    4. Creio que o erro acontece porque não fiz, por não saber como, a referencia a Microsoft Office 11 Object Library, solicitado na instrução do código VBA exemplo do SILVIO. Utilizo o ACCESS 2016 e não descobri como fazer isso.

    5. Meu código VBA acionado no evento clicar é este:

    Código:
    Private Sub importar_Click()
    ' Requer referencia a Microsoft Office 11 Object Library
    On Error GoTo PROC_ERR
      
       Dim fd As FileDialog
       Set fd = Application.FileDialog(msoFileDialogFilePicker)
      
       fd.Title = "selecione o arquivo"
       fd.Filters.Add "Arquivo XLS", "*.xls", 1  'se for o caso, mude a extensão para XLSX, onde estão xls

       fd.Show
      
       If (fd.SelectedItems.Count > 0) Then
           '------inicio importação excel para sincronização
           Dim strPathFile As String, strFile As String, strPath As String
           Dim strTable As String
           Dim blnHasFieldNames As Boolean
           blnHasFieldNames = True
           strPathFile = fd.SelectedItems(1)
           strTable = "TblPrepostoTmp" 'planilha temporária que vai receber os dados do MS Excel.[/color]
          
           'apaga temporários, não é necessário, mas por segurança estou limpando a tabela antes
           DoCmd.RunSQL "Delete * from TblPrepostoTmp"
          
           'importa para tabela local temporária
           DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames
           MsgBox "Registros importados com sucesso !" & vbCrLf & _
                 "Atualizando registros", vbInformation, Me.Caption
                  
                  
            'Declaração das Variaveis
    Dim DB As Database
    Dim rs As DAO.Recordset ' TblPrepostoTmp - onde estão os dados que serão importados
    Dim rs1 As DAO.Recordset ' tbimportacao -  para onde irão os dados a serem importados.


    Set DB = CurrentDb()


       'Filtra os dados da tabela de Origem e Define a tabela de Destino dos dados.
       Set rs = DB.OpenRecordset("SELECT * FROM TblPrepostoTmp ")
       Set rs1 = DB.OpenRecordset("tbimportacao")


    'Inicia a Gravação dos dados na Tabela de Destino (Dim rs1 As DAO.Recordset ' tbimportacao ) ,repete até COPIAR todos os Registros que foram selecionados
    Do While Not rs.EOF
           'Inicia a Gravação dos dados na tbimportacao
           rs1.AddNew
           rs1("CONTRATO") = rs("contrato")
           rs1("CPF") = rs("cpf")
           rs1("DIAS ATRASO") = rs("diasAtraso")
           rs1("OPERAÇÃO") = rs("operacao")
           rs1("DIVIDA") = rs("divida")
           rs1("AÇÃO") = rs("acao")
           rs1("CONTATO") = rs("contato")
           rs1("REVERTIDO") = rs("revertido")
           rs1.Update
       rs.MoveNext
       Loop

       'Ao Final Encerra as Conexões
       rs.Close
       rs1.Close
       DB.Close
          
           MsgBox "Operação concluída.", vbInformation, Me.Caption
          
           'apaga temporarios da tblprepostotmp que recebeu a importação.
           DoCmd.RunSQL "Delete * from TblPrepostoTmp"
          
       Else
           MsgBox "Não foi escolhido nenhum arquivo", vbInformation, Me.Caption

       End If
      
    PROC_EXIT:
       Exit Sub
      
    PROC_ERR:
       DoCmd.Hourglass False
       If Err.Number = 3011 Then
          LocalXML = ""
          MsgBox ("Arquivo inválido.")
       Else
           MsgBox Err.Description
       End If
       Resume PROC_EXIT




    End Sub


    6. Peço ajuda de vocês para corrigir este erro. Caso seja preciso, envio o BD e a planilha que busco importar.

    Abraço!!!
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]IMPORTAR DO EXCEL PARA TABELA DO BD - Requerer referencia a Microsoft Office 11 Object Library

    Mensagem  FabioPaes em Sab 02 Set 2017, 02:19

    Olá, tenha atenção as regras do Fórum! Pois as salas de Repositórios são somente para Exemplos!


    Abra o Visual Basic> Clique em Ferramenta> Referencia> depois localize o Microsoft Office 16 Object Library e o marque.
    Lembrando que o numero, se refere a versão. No meu caso, imagem a baixo, e access 2013.
    [Você precisa estar registrado e conectado para ver esta imagem.]


    .................................................................................
    _____________________________________________________________________
    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!

    traderboy
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 22
    Registrado : 16/01/2017

    RESOLVIDO

    Mensagem  traderboy em Sab 02 Set 2017, 02:38

    Ola Fabio,

    Obrigado, não percebi que havia criado a mensagem na sala de repositório.

    Deu certo! Consegui fazer a importação. Estou com um probleminha com a transferência dos dados da tabela temporária para outra tabela. No entanto, a dúvida inicial foi resolvida.

    Muito Obrigado Fabio!!!
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]IMPORTAR DO EXCEL PARA TABELA DO BD - Requerer referencia a Microsoft Office 11 Object Library

    Mensagem  FabioPaes em Sab 02 Set 2017, 03:32

    Blz... De uma olhada na sala de repositórios, tem vários modelos de importação... Eu mesmo ja fiz uns 3.


    .................................................................................
    _____________________________________________________________________
    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: Sab 23 Set 2017, 06:45