Ir ao conteúdo

Posts recomendados

Postado

Pessoal.

 

Desenvolvi uma planilha com vba utilizando o código abaixo, ela funciona bem, mas preciso aprimorar o código, pois quando executo a macro todos os dados das outras planilhas são copiados. Até mesmo o cabeçalho é copiado. 

 

Preciso que o cabeçalho que fica na célula A1 não seja copiado e que os dados que já foram copiados não sejam copiados novamente. Ex.: tenho uma coluna com datas e apenas que copie as datas que ainda não foram copiadas.

 

Segue o código:


 

Sub Gravar_BD()
Application.DisplayAlerts = False
    
Dim Pasta As String
    Dim Arquivo As String
    
    'Seleciona a pasta do Windows onde estão todas as
    'pastas de trabalho a serem copiadas
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        Pasta = .SelectedItems(1)
    End With
    
    'Armazena o nome do primeiro arquivo (pasta de trabalho) na variável "Arquivo"
    Arquivo = Dir(Pasta & "\" & "*.xls*")
    
    'Laço para para percorrer todos os arquivos da pasta do windows
    Do
        Application.ScreenUpdating = False
  
        'Abre o arquivo
        Workbooks.Open (Pasta & "\" & Arquivo)
        
        'Copia a região adjacente à celula A2 para a planilha de consolidação
        [Plan1!A2].CurrentRegion.Copy ThisWorkbook.ActiveSheet.Cells(Cells.Rows.Count, "A").End(xlUp).Offset(1, 0)
        
        'Fecha o arquivo
        Workbooks(Arquivo).Close False
                
        'Lista o próximo arquivo
        Arquivo = Dir
    Loop While Arquivo <> ""
    
    Application.CutCopyMode = False
    
    Application.ScreenUpdating = True
    
    MsgBox "Fim de Execução da Macro"
    
 Application.DisplayAlerts = True
    
End Sub

 

Grato pela ajuda.

Postado

Valeu DJunqueira.

 

Mas isto não resolve meu problema, pois os dados que tenho são atualizados diariamente e como citei, preciso que apenas os dados novos sejam inseridos. A fonte de dados são outras 8 planilhas de outros usuários.

 

Ainda tenho o problema de serem copiados também  o cabeçalhos dos arquivos.

 

Tks

Postado

Segue o arquivo que vai armazenar os dados de outros arquivos e outro que irá fornecer os dados. Para testar é só criar uma pasta no diretório. O Problema que está copiando tudo até cabeçalho e repetindo os dados já inseridos.

BD.xlsx

Andre Diario.xlsx

Postado

Fiz da seguinte forma, usei o seu código do início do tópico na pasta de trabalho BD.xlsm, depois adicionei alguns dados na plan1 da Andre Diario.xlsx e constatei q o problema estava no uso de:

 

'Copia a região adjacente à celula A2 para a planilha de consolidação         [Plan1!A2].CurrentRegion.Copy ThisWorkbook.ActiveSheet.Cells(Cells.Rows.Count, "A").End(xlUp).Offset(1, 0)

 

No caso CurrentRegion seleciona e copia tudo q estiver escrito na aba, inclusive o cabeçalho, e depois cola na BD.xlsm.

Minha proposta de solução é você trocar essa parte do código por:

 

'Copia a região adjacente à celula A2 para a planilha de consolidação         [Plan1!A2:F20].Copy ThisWorkbook.ActiveSheet.Cells(Cells.Rows.Count, "A").End(xlUp).Offset(1, 0)

 

Sendo q F20 é apenas um número qq q representa o número - com folga - de linhas q você irá costumeiramente copiar. Se forem 100 linhas coloque F200.

 

Sua planilha Andre Diario.xlsx poderia se beneficiar de uma revisão nas fórmulas e alguma coisa no layout, se quiser posso fazer, mas p/ isso você deverá me repassar a estrutura sem senha, sem vínculos quebrados e sem informações sigilosas como nomes, CPF, etc.

Substitua nomes por Cliente1, Cliente2 e assim por diante.

BD.zip

Postado

DJunqueira, o teu código deu certo para copiar apenas os dados, mas teria como melhorar e apenas copiar os dados que ainda não foram copiados? Ex.: ontem foi atualizado com os dados até dia 06, hj irei atualizar e queria que copiasse apenas os dados a partir do dia 07, pois os dados de 01 à 06 já estão na planilha BD.

Obrigado pela ajuda, segue o arquivo do Andre destravado e sem vínculos.

 

 

CasaDoHardware, o código vai na planilha BD, mas ele está lá, só salvei em xls por causa do upload.

 

 

Andre Diario01.zip

Postado
30 minutos atrás, Ricstos disse:

DJunqueira, o teu código deu certo para copiar apenas os dados, mas teria como melhorar e apenas copiar os dados que ainda não foram copiados? Ex.: ontem foi atualizado com os dados até dia 06, hj irei atualizar e queria que copiasse apenas os dados a partir do dia 07, pois os dados de 01 à 06 já estão na planilha BD.

Obrigado pela ajuda, segue o arquivo do Andre destravado e sem vínculos.

 

 

 

Andre Diario01.zip

Uma sugestão apague os dados da planilha Andre apos a copia assim vai copiar somente os dados novos.

Postado
Em 09/01/2017 às 23:48, DJunqueira disse:

Fiz diversas alterações nas fórmulas da sua pasta de trabalho especialmente relacionadas a pesquisa na aba dos dias.

Estas fórmulas agora tem apenas uma linha.

 

Quanto ao código siga a orientação do @CasaDoHardware.

Andre Diario vDJ 1.zip

Valeu DJunqueira, as fórmula ficaram ótimas e a planilha roda mais rápido. Só não irei utilizar a parte da função _xlfn, pois meu Office é 2007. Sem pedir muito, poderia explicar o funcionamento dela? Obrigado.

 

CasaDoHardware, obrigado pela sugestão, mas os dados não podem ser apagados da planilha André, pois é o histórico que ele tem para justificar no final do mês. Além disso, a planilha fica com o André e não comigo. valeu

 

Vou tentar achar solução, acho q vou criar uma outra aba, onde deixo os dados para copiar e ao fechar a planilha eles são apagados, e outra planilha para ficar de histórico. 

 

O que acham?

 

Obrigado

Postado

Me manda a planilha com acumulo de dias p/ entender melhor o q você quer.

 

Quanto a função_xlfn pode ser qq uma das novas funções do Excel 2016, mas imagino q no caso seja a SEERRO(), essa função é interessante porque evita o trabalho dobrado, antes dela o Excel calculava uma fórmula e se não houvesse erro ele calculava novamente :(. Agora com ela o Excel só faz mais alguma coisa se der erro.

 

A alternativa p/ o 2007 é testar se houve erro:

=SE(ÉRRROS(TestaFunção); RespostaFunçãoComErro; FunçãoOkCalculaNovamente)

Postado

Me diz uma coisa Se a planilha Andre é igual a sua porque fazer uma atualização diaria, e nao uma mensal.

 

Se você precisa ter acesso a pasta basta deixar a pasta na rede da empresa onde os dois podem ter acesso, e se você precisar de um backup pode realizar esse processo 1 vez por mes.

 

Seja la qual for a razão nao tem motivo para ter duas planilha iguais.

Postado
1 minuto atrás, CasaDoHardware disse:

Me diz uma coisa Se a planilha Andre é igual a sua porque fazer uma atualização diaria, e nao uma mensal.

Se você precisa ter acesso a pasta basta deixar a pasta na rede da empresa onde os dois podem ter acesso, e se você precisar de um backup pode realizar esse processo 1 vez por mes.

Seja la qual for a razão nao tem motivo para ter duas planilha iguais.

Concordo plenamente com o @CasaDoHardware.

Postado
20 horas atrás, DJunqueira disse:

Concordo plenamente com o @CasaDoHardware.

Pessoal,

 

Eu não utilizo a planilha Andre, apenas André a utiliza. O Coordenador recebe os resultados do supervisores (no caso André é um deles) para ver as justificativas dos resultados não alcançados. É necessário o monitoramento diário e mensalmente ocorre o fechamento e verificação do atingimento das metas. Não há duplicação da planilha.

 

Fiz uma alteração na planilha, inclui uma aba "histórico", que vai acumulando os dados dia após dia até o fechamento do mês. Inclui uma macro para apagar os dados de "plan1". Então quando fecha a planilha "Andre" ela copia os dados de "Resumo diario" para "Plan1" e depois copia de "Plan1" para "Histórico". Abrir a planilha os dados de "Plan1" são apagados. Funcionou bem.

 

Mas ocorreu um problema ao utilizar a planilha "BD", pois quando ela vai extrair os dados das planilhas dos supervisores, ela abre as planilhas e apaga os dados a serem copiados.

 

Resolvi um problema e criei outro.

 

Ah, não tem como colocar a planilha numa rede, pois os supervisores trabalham em campo no território nacional.

 

Não estou conseguindo fazer upload das planilhas. Tentarei depois

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!