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


    Colocar arquivos XLSX em uma única pasta e importar

    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Seg 28 Out 2019, 16:38

    Estou com um grupo de 200 pastas que possuem subpastas com arquivos em XLSX. Preciso reunir todos eles em um única pasta. Alguém sabe como posso fazer?
    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Ter 29 Out 2019, 06:34

    Descobri uma forma manual de fazer a transferência dos arquivos de várias pastas para uma só. Achei na internet. É só entrar na pasta "Master" ou na primeira pasta onde todos os arquivos se encontram pelo "Explorer", clicar na opção procurar, que fica na parte superior da tela e solicitar que ele procure todos os arquivos com extensão ".xlsx". Depois é só selecionar todos os arquivos encontrados e colar na pasta única.
    Agora estou precisando de uma fórmula para importar todos esses arquivos para uma tabela no access, sendo que cada arquivo possui duas abas que precisam ser importadas.
    ahteixeira
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  ahteixeira em Ter 29 Out 2019, 06:46

    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Qua 30 Out 2019, 22:20

    Boa Noite,
    Verifiquei os exemplos que têm no fórum, porém, nenhum atendeu o que eu preciso. Não sei se a procura que realizei foi errada.
    Estou precisando importar as planilhas que coloquei na mesma pasta da seguinte forma:
    1 - Todas elas possuem o mesmo layout;
    2 - Elas possuem várias abas, mas preciso importar duas delas (BP e DRE) para duas tabelas distintas com o mesmo nome. Ou seja, as abas com nome BP para uma tabela chamada BP, e as abas com nome DRE para uma tabela com nome DRE;
    3 - Preciso que nas linhas gravadas de determinado arquivo, tanto na tabela DRE quanto na tabela BP, seja gravado o nome do arquivo que foi importado (em todas as linhas importadas das respectivas abas);
    4 - Preciso que ele replique a informação da célula A2 em cada linha da tabela (das duas abas importadas BP e DRE), indica o ano;
    5 - tenho tanto arquivos com extensão xsl quanto arquivos com extensão xlsx.

    obs.: segue um arquivo em excel como exemplo.

    Obrigado!
    Anexos
    Colocar arquivos XLSX em uma única pasta e importar Attachment1 - AGF_NOME_UF_MCU_2015.xls
    Você não tem permissão para fazer download dos arquivos anexados.
    (116 Kb) Baixado 3 vez(es)
    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Qui 31 Out 2019, 08:08

    Achei esse código do João Paulo, mas ele só importa a primeira ABA das planilhas. Além disso tem uma planilha que está fora do padrão e dá erro por não encontrar um nome na tabela.
    Acho que tem de colocar uma regra para ele inserir os nomes dos campos que ele não encontrar automaticamente, outra para ele gravar o nome do arquivo em um campo específico e outra para ele gravar o ano e o nome do órgão que só se encontra na célula A2 e A3.

    Sub Importa10030()

    Dim strPathFile As String, strFile As String, strPath As String
    Dim strTable As String
    Dim blnHasFieldNames As Boolean
    blnHasFieldNames = True

    strPath = "C:\PlanilhasImportar\" ' drive onde se situa o seu documento excel
    strTable = "10030_PlanilhasImportadas" 'nome da tabela no seu banco
    strFile = Dir(strPath & "*.xls") 'nome do seu excel, se mudar para "*.xls" importa todas as folhas excel que estiverem em C:\ para a _ tabela do banco.

    Do While Len(strFile) > 0
    strPathFile = strPath & strFile
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, strTable, strPathFile, blnHasFieldNames

    strFile = Dir()
    Loop

    End Sub

    Obs.: não sei se pode fazer isso aqui no grupo, mas devido a urgência deposito 100,00 pra quem conseguir.
    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Sab 02 Nov 2019, 16:04

    Boa tarde,

    Vou tentar ser mais específico:
    Preciso importar uma grande quantidade de planilhas de uma pasta para um BD, mas os dados tem de ser importados da seguinte forma:
    1 - Importar somente as abas BP e DRE para tabelas com o mesmo nome, ou seja, todas as abas BP's para uma tabela chamada BP e todas as abas DREs para um tabela chamada DRE;
    2 - Ao importar preciso que seja replicada na tabela em um campo novo o nome do arquivo importado;
    3 - Preciso que ele carregue o dado da célula A2 (ano) para todas as linhas importadas, bem como, o campo da célula C2 (nome). Se observarem ela só existe na primeira linha, preciso desse dado em todas as linhas;

    Conforme o exemplo abaixo.
    Anexos
    Colocar arquivos XLSX em uma única pasta e importar AttachmentTodos_em_imagem.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (26 Kb) Baixado 3 vez(es)
    avatar
    RICARDO BARBOSA MACHADO
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 33
    Registrado : 21/07/2014

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  RICARDO BARBOSA MACHADO em Qui 07 Nov 2019, 14:05

    Boa tarde,

    Encontrei esse SQL que segundo o autor faz exatamente o que estou precisando, ou seja:
    1 - Importa várias planilhas para uma tabela específica;
    2 - Importa somente a ABA que eu preciso da planilha; e
    3 - Insere o nome dos arquivos importados nos dados carregados para a tabela.
    o problema é que ele está em SQL e não consegui coloca-lo no ACCESS.
    Isso é possível?
    Se não for, tem como traduzir isso para VBA?

    PRINT'CRIA TABELA TMP'
    PRINT CONVERT(VARCHAR(10), GETDATE(), 103) + ' ' +   CONVERT(VARCHAR(08), GETDATE(), 108)

    IF EXISTS (SELECT NAME FROM TEMPDB.SYS.TABLES WHERE NAME LIKE '%#PERFORMANCE_TMP%') DROP TABLE #PERFORMANCE_TMP

    CREATE TABLE #PERFORMANCE_TMP(
            [NOME AGENTE]                            VARCHAR(MAX) NULL
        ,    [ID AGENTE]                                VARCHAR(MAX) NULL
        ,    [N¨²MERO DE CHAMADAS ATENDIDAS]            VARCHAR(MAX) NULL
        ,    [TEMPO M¨¦DIO DE CONVERSA]                VARCHAR(MAX) NULL
        ,    [TEMPO M¨¦DIO OCUPADO]                    VARCHAR(MAX) NULL
        ,    [TEMPO M¨¦DIO ACW]                        VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL LOGADO]                    VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL DE CONVERSA]                VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL OCIOSO]                    VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL ACW]                        VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL TOCANDO]                    VARCHAR(MAX) NULL
        ,    [TEMPO TOTAL EM PAUSA]                    VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA AUTOMATICO]                VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA  INTERVALO]                VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA PARTICULAR]                VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA PAUSA 10]                VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA TREINAMENTO]            VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA FEEDBACK]                VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA APOIO/CEDIDO]            VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA AMBULAT?RIO]            VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA PRODUCT/OUTBOUND]        VARCHAR(MAX) NULL
        ,    [TEMPO DE PAUSA PROBLEMAS T?CNICOS]        VARCHAR(MAX) NULL
        ,    [N¨²MERO DE CHAMADAS CURTAS]            VARCHAR(MAX) NULL
        ,    [N¨²MERO DE CHAMADAS TRANSFERIDAS]        VARCHAR(MAX) NULL
        ,    [N¨²MERO DE CHAMADAS INTERNAS]            VARCHAR(MAX) NULL
        ,    [N¨²MERO DE CHAMADAS REALIZADAS]        VARCHAR(MAX) NULL
        ,    [TEMPO M¨¦DIO DAS CHAMADAS REALIZADAS]    VARCHAR(MAX) NULL
        ,    [PORCENTAGEM TEMPO PRODUTIVO]            VARCHAR(MAX) NULL
    ) ON [PRIMARY];


    --==============================================================
    -- CRIA TABELA TEMPORÁRIA PARA PEGAR O NOME DO ARQUIVO MAILING
    --==============================================================

    IF EXISTS (SELECT NAME FROM TEMPDB.SYS.TABLES WHERE NAME LIKE '%#BASE_PERFORMANCE_TMP%') DROP TABLE #BASE_PERFORMANCE_TMP

    CREATE TABLE #BASE_PERFORMANCE_TMP ( PERFORMANCE VARCHAR(150), CONTADOR INT IDENTITY )
    DECLARE @PASTA VARCHAR(MAX) SET @PASTA = 'MASTER.SYS.XP_CMDSHELL ''DIR \\SERVER-ATLAS\motiva\planejamento\MIS\RELATÓRIOS\Claro\Renta\2018\'+@MESREF+'\Performance\*.txt /B'''              
    -- select  * from #BASE_ANALITICO_TMP
    INSERT INTO #BASE_PERFORMANCE_TMP   EXEC(@PASTA)
    DELETE FROM #BASE_PERFORMANCE_TMP  WHERE PERFORMANCE IS NULL
                                             
    -- EXECUTA LOOPING QUE IMPORTA OS REGISTROS                            

    PRINT'CRIA TABELA TMP DE INSERÇÃO'
    PRINT CONVERT(VARCHAR(10), GETDATE(), 103) + ' ' +   CONVERT(VARCHAR(08), GETDATE(), 108)  


    IF OBJECT_ID('TEMPDB..#PERFORMANCE_CLARO_RENTA') IS NOT NULL BEGIN DROP TABLE #PERFORMANCE_CLARO_RENTA END

    CREATE TABLE #PERFORMANCE_CLARO_RENTA(
            [NOME AGENTE]                            VARCHAR(MAX) NULL
        ,    [ID AGENTE]                                INT NULL
        ,    [N¨²MERO DE CHAMADAS ATENDIDAS]            INT NULL
        ,    [TEMPO M¨¦DIO DE CONVERSA]                INT NULL
        ,    [TEMPO M¨¦DIO OCUPADO]                    INT NULL
        ,    [TEMPO M¨¦DIO ACW]                        INT NULL
        ,    [TEMPO TOTAL LOGADO]                    INT NULL
        ,    [TEMPO TOTAL DE CONVERSA]                INT NULL
        ,    [TEMPO TOTAL OCIOSO]                    INT NULL
        ,    [TEMPO TOTAL ACW]                        INT NULL
        ,    [TEMPO TOTAL TOCANDO]                    INT NULL
        ,    [TEMPO TOTAL EM PAUSA]                    INT NULL
        ,    [TEMPO DE PAUSA AUTOMATICO]                INT NULL
        ,    [TEMPO DE PAUSA  INTERVALO]                INT NULL
        ,    [TEMPO DE PAUSA PARTICULAR]                INT NULL
        ,    [TEMPO DE PAUSA PAUSA 10]                INT NULL
        ,    [TEMPO DE PAUSA TREINAMENTO]            INT NULL
        ,    [TEMPO DE PAUSA FEEDBACK]                INT NULL
        ,    [TEMPO DE PAUSA APOIO/CEDIDO]            INT NULL
        ,    [TEMPO DE PAUSA AMBULAT?RIO]            INT NULL
        ,    [TEMPO DE PAUSA PRODUCT/OUTBOUND]        INT NULL
        ,    [TEMPO DE PAUSA PROBLEMAS T?CNICOS]        INT NULL
        ,    [N¨²MERO DE CHAMADAS CURTAS]            INT NULL
        ,    [N¨²MERO DE CHAMADAS TRANSFERIDAS]        INT NULL
        ,    [N¨²MERO DE CHAMADAS INTERNAS]            INT NULL
        ,    [N¨²MERO DE CHAMADAS REALIZADAS]        INT NULL
        ,    [TEMPO M¨¦DIO DAS CHAMADAS REALIZADAS]    INT NULL
        ,    [PORCENTAGEM TEMPO PRODUTIVO]            VARCHAR(MAX) NULL
        ,    [DATA_DA_ACAO]                            datetime
        ,    SKILL                                    VARCHAR(MAX) NULL
        ,    DATA_IMPORTACAO                            DATETIME
    ) ON [PRIMARY];

    DECLARE @I INT, @F INT, @ARQV VARCHAR(250)                            

    SET @I = (SELECT MIN(CONTADOR) FROM #BASE_PERFORMANCE_TMP)                            
    SET @F = (SELECT MAX(CONTADOR) FROM #BASE_PERFORMANCE_TMP)                            

    WHILE (@I <= @F) BEGIN

    SET @ARQV = (SELECT PERFORMANCE FROM #BASE_PERFORMANCE_TMP WHERE CONTADOR = @I)

    EXEC ('                            
    BULK INSERT #PERFORMANCE_TMP
    FROM                        
    ''\\SERVER-ATLAS\MOTIVA\planejamento\MIS\RELATÓRIOS\Claro\Renta\2018\'+@MESREF+'\Performance\'+@ARQV+'''                            
    WITH(FIRSTROW =2, CODEPAGE = 1252, FIELDTERMINATOR = ''\t'', ROWTERMINATOR = ''0x0d'') ')  


    INSERT INTO #PERFORMANCE_CLARO_RENTA
    SELECT
            *
        ,    convert(datetime, substring(LEFT(RIGHT(@ARQV, 12), 8 ),1,2)+'/'+substring(LEFT(RIGHT(@ARQV, 12), 8 ),3,2)+'/'+substring(LEFT(RIGHT(@ARQV, 12), 8 ),5,4), 103) [DATA_DA_ACAO]
        ,    SUBSTRING(REPLACE(@ARQV, 'DATA_SKILL', ''),1, LEN(REPLACE(@ARQV, 'DATA_SKILL', ''))-13)[SKILL]
        ,    GETDATE() [DATA_IMPORTACAO]
    FROM
        #PERFORMANCE_TMP

    SET @I = @I+1                            
                               
    END

    PRINT'INSERE OS REGISTROS NA TABELA TEMP FINAL'
    PRINT CONVERT(VARCHAR(10), GETDATE(), 103) + ' ' +   CONVERT(VARCHAR(08), GETDATE(), 108)

    INSERT INTO [Claro_Renta].[dbo].[PERFORMANCE_CLARO_RENTA]
    SELECT * FROM #PERFORMANCE_CLARO_RENTA

    END

    Conteúdo patrocinado

    Colocar arquivos XLSX em uma única pasta e importar Empty Re: Colocar arquivos XLSX em uma única pasta e importar

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Qui 14 Nov 2019, 22:11