Ao trabalhar com fontes de dados variadas, muitas vezes você pode ter dificuldades para compilar várias pastas de trabalho e planilhas antes de chegar a uma parte de dados final. Imagine uma situação em que você tem algumas centenas de pastas de trabalho para combinar antes mesmo de começar o dia.
Ninguém quer passar horas intermináveis trabalhando em fontes diferentes, abrindo cada pasta de trabalho, copiando e colando os dados de várias planilhas, antes de finalmente fazer uma pasta de trabalho consolidada. E se uma macro VBA puder fazer isso por você?
Com este guia, você pode criar seu próprio código de macro do Excel VBA para consolidar várias pastas de trabalho, tudo em questão de minutos (se os arquivos de dados forem muitos).
Pré-requisitos para criar seu próprio código de macro VBA
Você precisa de uma pasta de trabalho para hospedar o código VBA, enquanto as outras pastas de trabalho de dados de origem são separadas. Além disso, crie uma pasta de trabalho Consolidado para armazenar os dados consolidados de todas as suas pastas de trabalho.
Criar uma pasta Consolidação em seu local preferido para armazenar todas as suas pastas de trabalho de origem. Quando a macro é executada, ela alterna entre cada pasta de trabalho armazenada nessa pasta, copia o conteúdo de várias planilhas e a coloca na pasta de trabalho Consolidada.
Criando seu próprio código VBA do Excel
Uma vez que os pré-requisitos estão fora do caminho, é hora de mergulhar no código e começar a hackear o básico para adaptá-lo aos seus requisitos.
Relacionado: Recursos avançados do Microsoft Excel que você deve conhecer
aperte o Alt+F11 key no Excel para abrir o editor de código de macro VBA. Cole o código escrito abaixo e salve o arquivo como uma pasta de trabalho habilitada para macro (.xlsm extensão).
Sub arquivos abertos()
'declara as variáveis usadas no código VBA
Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long
'desabilite essas funções para melhorar o processamento de código
Com Aplicativo
.DisplayAlerts = False
.ScreenUpdating = False
Terminar com'altera o caminho da pasta onde seus arquivos serão salvos
MyFolder = InputBox("Digite o caminho da pasta de Consolidação") & "\"
'define a referência da pasta em uma variável de macro
MeuArquivo = Dir (MinhaPasta)
'abre um loop para percorrer cada pasta de trabalho individual armazenada na pasta
Faça enquanto Len (MeuArquivo) > 0
'ativa a pasta de trabalho Consolidação
Windows("Consolidação").Ativar
'calcula a ultima linha preenchida
Range("a1048576").Selecione
Seleção. Fim (xlUp). Selecione
Célula ativa. Deslocamento (1, 0). Selecione'abre a primeira pasta de trabalho dentro da pasta Consolidação
Pastas de trabalho. Abrir nome de arquivo:=MyFolder & MyFile
Windows (MeuArquivo). Ativar
'percorrer cada planilha dentro das pastas de trabalho para copiar os dados
Dim ws como planilha
Para cada ws em planilhasws. Ativar
ws. AutoFilterMode = False'ignora o cabeçalho e copia os dados da linha 2
If Cells (2, 1) = "" Then GoTo 1Ir para 10
1: Próximo
10: Range("a2:az20000").Copiar
Windows("Consolidação").Ativar
'cola o conteúdo copiado
Folha Ativa. Colar
Windows (MeuArquivo). Ativar
'fecha a pasta de trabalho aberta uma vez que os dados são colados
Pasta de trabalho ativa. Fechar
'esvazia o cache para armazenar o valor da próxima pasta de trabalho
MeuArquivo = Dir()
'abre o próximo arquivo da pasta
Laço
'habilita as funções desabilitadas para uso futuro
Com Aplicativo
.DisplayAlerts = Verdadeiro
.ScreenUpdating = Verdadeiro
Terminar com
Finalizar Sub
O código VBA explicado
A primeira parte do código é definir uma sub-rotina, que contém todo o seu código VBA. Defina a sub-rotina com sub, seguido do nome do código. O subnome pode ser qualquer coisa; idealmente, você deve manter um nome relevante para o código que está prestes a escrever.
Relacionado: Sites e blogs para aprender dicas e truques do Excel
Excel VBA entende variáveis criadas pelo usuário e seus tipos de dados correspondentes declarados com escurecer (dimensão).
Para aumentar a velocidade de processamento do seu código, você pode desativar a atualização da tela e suprimir todos os alertas, pois isso retarda a execução do código.
O usuário será solicitado a informar o caminho da pasta onde os arquivos de dados estão armazenados. Um loop é criado para abrir cada pasta de trabalho armazenada na pasta, copiar os dados de cada planilha e anexá-los ao Consolidação pasta de trabalho.
A pasta de trabalho Consolidação é ativada para que o Excel VBA possa calcular a última linha preenchida. A última célula na planilha é selecionada e a última linha é calculada na pasta de trabalho usando a função de deslocamento. Isso é muito útil quando a macro começa a anexar dados dos arquivos de origem.
À medida que o loop abre o primeiro arquivo de origem, os filtros são removidos de cada planilha (se eles existe), e os dados que variam de A2 a AZ20000 serão copiados e colados no arquivo Consolidation pasta de trabalho.
O processo é repetido até que todas as planilhas da pasta de trabalho sejam anexadas à pasta de trabalho mestre.
Relacionado: Melhores cursos online para dominar o Excel avançado
Finalmente, o arquivo de origem é fechado quando todos os dados são colados. A próxima pasta de trabalho é aberta para que a macro VBA possa repetir as mesmas etapas para o próximo conjunto de arquivos.
O loop é codificado para ser executado até que todos os arquivos sejam atualizados automaticamente na pasta de trabalho mestre.
Personalizações baseadas no usuário
Às vezes, você não quer se preocupar com prompts embutidos, especialmente se você for o usuário final. Se preferir codificar o caminho da pasta Consolidation no código, você pode alterar esta parte do código:
MyFolder = InputBox("Digite o caminho da pasta de Consolidação") & "\"
Para:
MinhaPasta = “Caminho da pasta” & "\"
Além disso, você também pode alterar as referências de coluna, pois a etapa não está incluída neste código. Basta substituir a referência da coluna final pelo valor da última coluna preenchida (AZ, neste caso). Você precisa lembrar que a última linha preenchida é calculada por meio do código da macro, portanto, você precisa alterar apenas a referência da coluna.
Para tirar o máximo proveito dessa macro, você pode usá-la apenas para consolidar pastas de trabalho no mesmo formato. Se as estruturas forem diferentes, você não poderá usar essa macro VBA.
Consolidando várias pastas de trabalho usando a macro VBA do Excel
Criar e modificar um código VBA do Excel é relativamente fácil, especialmente se você entender algumas das nuances do código. O VBA percorre sistematicamente cada linha de código e a executa linha por linha.
Se você fizer alguma alteração no código, certifique-se de não alterar a ordem dos códigos, pois isso interromperá a execução do código.
Facilite o gerenciamento de dados com essas macros do Excel.
Leia a seguir
- Programação
- Programação
- Microsoft Excel
Gaurav Siyal tem dois anos de experiência em redação, escrevendo para uma série de empresas de marketing digital e documentos de ciclo de vida de software.
Assine a nossa newsletter
Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!
Clique aqui para se inscrever