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

    Importar planilha do Excel com três abas

    avatar
    EliasSantos
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 01/10/2011

    Importar planilha do Excel com três abas Empty Importar planilha do Excel com três abas

    Mensagem  EliasSantos 19/3/2021, 20:58

    Boa noite a todos!

    Meu sistema importa os dados de uma planilha de excel, até aqui era uma planilha simples com apenas uma aba, agora tive que acrescentar mais duas abas e precisava importar os dados de cada aba para uma tabela diferente, teria como fazer isso no VBA?

    O código que estava usando para importar uma aba era este:

    Dim strPathFile As String, strFile As String, strPath As String
    Dim strTable As String
    Dim blnHasFieldNames As Boolean
    blnHasFieldNames = True 'Como True se contiver nomes de campos na prim. linha
    strPath = "X:\LS\" ' drive onde se situa o seu documento excel
    strTable = "TB_CHK" 'nome da tabela no seu banco
    strFile = Dir(strPath & "*.xlsx, ChkList") '"*.xlsx" importa todas as folhas excel _
    que estiverem na pasta para a tabela do banco.
    Do While Len(strFile) > 0
    strPathFile = strPath & strFile
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _
    strTable, strPathFile, blnHasFieldNames
    strFile = Dir()
    Loop

    As três abas são: Autos, ChkList e Funcionários

    Desde já obrigado a todos!
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1476
    Registrado : 13/12/2016

    Importar planilha do Excel com três abas Empty Re: Importar planilha do Excel com três abas

    Mensagem  Alexandre Fim 19/3/2021, 22:10

    Elias boa noite,

    Para importar várias "sheets", é necessário referenciar o Excel e seus objetos.

    Veja este exemplo te ajuda:
    https://www.maximoaccess.com/t4276-resolvido-importar-varios-sheets-de-varias-planilhas-excel-para-uma-so-tabela-no-ms-access


    Boa sorte

    Fim


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.

    Ronibarros gosta desta mensagem

    avatar
    EliasSantos
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 01/10/2011

    Importar planilha do Excel com três abas Empty Re: Importar planilha do Excel com três abas

    Mensagem  EliasSantos 20/3/2021, 12:43

    Muito obrigado, Alexandre

    Foi muito útil

    Deu certo assim:

    Dim appExcel As Excel.Application
    Dim wb As Excel.Workbook
    Dim sh As Excel.Worksheet
    Dim strValue As String
    Dim strTable As String
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "CS_EXCLUI", acViewNormal
    DoCmd.SetWarnings True

    strTable = "TB_CHK" 'nome da tabela no seu banco
    Set appExcel = CreateObject("Excel.Application")
    Set wb = appExcel.Workbooks.Open("X:\LS_TESTE\PlanilhaTeste.xlsx") 'nome do seu excel e seu diretorio
    For Each sh In wb.Sheets
    Debug.Print sh.Name
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, "X:\LS_TESTE\PlanilhaTeste.xlsx", True, sh.Name & "!"
    Next
    wb.Close
    appExcel.Quit
    On Error GoTo 0
    Exit Sub

    Importou todos os sheets (nem conhecia essa palavra rs) para uma tabela só. Quanto a isso está tranquilo que dá pra resolver com consultas ação.

    Gostaria de fazer mais uma pergunta:
    Teria como alterar essa linha para importar de mais de uma planilha na pasta, pq são cinco setores me enviando as planilhas:

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, "X:\LS_TESTE\PlanilhaTeste.xlsx", True, sh.Name & "!"


    Tentei assim, mas não importa:
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, ("X:\LS_TESTE\" & "*.xls"), True, sh.Name & "!"

    Muito grato

    Ronibarros gosta desta mensagem


      Data/hora atual: 23/6/2021, 07:14