Para usar o PROCV dentro do VBA buscando dados em outra pasta de trabalho (um arquivo Excel diferente, aberto ao mesmo tempo), use Application.VLookup apontando explicitamente para a pasta de trabalho e a planilha de destino — por exemplo, Workbooks(“Pasta1.xlsx”).Sheets(“Planilha2”).Range(“A:B”) — dentro de um laço que percorre cada linha da sua planilha de origem automaticamente.
Você já teve uma planilha de pedidos, estoque ou vendas em um arquivo, e a tabela com os dados de referência (preço, descrição, categoria) guardada em outro arquivo Excel separado? Fazer o PROCV manualmente linha por linha, tendo que alternar entre as duas janelas e confirmar cada resultado, é um processo lento e sujeito a erro — principalmente quando a lista de itens cresce toda semana.
Sem automatizar essa busca, você acaba refazendo o mesmo PROCV repetidas vezes sempre que os dados mudam, correndo o risco de esquecer de atualizar alguma linha ou de puxar a fórmula para a coluna errada.
Neste artigo iremos mostrar como montar uma macro em VBA que faz o PROCV automaticamente, linha por linha, buscando os dados numa planilha de outra pasta de trabalho aberta — sem precisar copiar fórmula nenhuma e sem se preocupar em até onde a lista vai, porque a macro descobre isso sozinha.
O cenário: duas pastas de trabalho abertas ao mesmo tempo
Neste exemplo, temos duas planilhas abertas ao mesmo tempo: a planilha principal (vamos chamar de Pasta1), com a coluna de código do produto, e uma segunda pasta de trabalho (Pasta2), com uma tabela de referência contendo código do produto e a quantidade correspondente. O objetivo é: para cada código na Pasta1, buscar a quantidade na Pasta2 e trazer o resultado de volta, sem fazer isso manualmente linha por linha.
Passo 1: habilitar a guia Desenvolvedor
Se a guia Desenvolvedor não aparecer na sua faixa de opções, vá em Arquivo > Opções > Personalizar Faixa de Opções e marque a caixa “Desenvolvedor” na lista da direita. Ela vem desabilitada por padrão, mas o recurso já está instalado — só precisa ser ativado.
Passo 2: criar o módulo e declarar as variáveis
Na guia Desenvolvedor, clique em Visual Basic, depois em Inserir > Módulo. Dentro do módulo, crie uma sub-rotina (vamos chamar de ProcvOutraPlanilha) e declare as variáveis que a macro vai usar:
ultima_linha (para descobrir automaticamente até onde a lista de códigos vai, sem fixar um número), linha_inicial (a partir de qual linha os dados começam — geralmente a linha 2, pulando o cabeçalho) e resultado_procv (declarada como Variant, para guardar o valor que o PROCV encontrar a cada repetição).
Passo 3: encontrar a última linha automaticamente
Em vez de fixar “vai até a linha 50” (o que quebraria a macro se a lista crescer ou encolher), a fórmula usa Cells(Rows.Count, 1).End(xlUp).Row na planilha de origem — essa instrução simula o efeito de ir até a última linha da planilha e apertar Ctrl+Seta para cima, que é exatamente como um usuário descobriria manualmente onde a lista termina.
Passo 4: o laço For que repete o PROCV linha por linha
Com a última linha em mãos, um laço For linha = linha_inicial To ultima_linha percorre cada linha da planilha de origem. Dentro do laço, a macro pega o código do produto daquela linha específica e usa Application.VLookup — o equivalente do PROCV dentro do VBA — passando 4 parâmetros: o código a ser buscado, a pasta de trabalho e planilha de destino (Workbooks(“Pasta2.xlsx”).Sheets(“Planilha2”).Range(“A:B”)), o número da coluna que tem o valor de retorno (a coluna B, ou seja, “2”), e False para exigir uma correspondência exata.
O resultado de cada busca é guardado na variável resultado_procv e escrito de volta na planilha de origem, na coluna ao lado do código. Se o VBA não encontrar o código na outra planilha, ele preenche com o erro padrão do PROCV — o que serve de aviso visual de que aquele item não tem correspondência na tabela de referência.
Passo 5: transformar a macro num botão de um clique
Para não precisar abrir o editor do VBA (Alt+F11) e apertar F8 toda vez que quiser rodar a busca, vá em Desenvolvedor > Inserir e escolha um botão de formulário. Desenhe o botão na planilha, e na janela que abrir, associe-o à sub-rotina que você criou (ProcvOutraPlanilha). A partir daí, qualquer pessoa que abrir a planilha pode rodar a busca automática só clicando no botão — sem precisar saber nada de VBA.
Cuidados ao fazer PROCV em outra pasta de trabalho
A pasta de trabalho de destino (Pasta2, no nosso exemplo) precisa estar aberta no momento em que a macro é executada — se ela estiver fechada, o VBA não vai conseguir localizar o arquivo pelo nome simples e a macro retorna erro. Se você quiser rodar essa busca mesmo com a segunda pasta fechada, é preciso adaptar o código para abrir o arquivo automaticamente antes do laço (com Workbooks.Open), usando o caminho completo do arquivo no disco.
Outro cuidado: como as funções do VBA seguem a nomenclatura em inglês mesmo em versões do Excel em português, o PROCV aparece como VLookup dentro do código — não confunda com a fórmula que você digita direto na planilha.
Disponibilidade
VBA está disponível no Excel para Windows (2010 em diante) e no Excel para Mac. Não está disponível no Excel Online nem no Google Sheets — nesses casos, a alternativa mais próxima é o Apps Script (Google) ou fórmulas de importação entre planilhas.
Perguntas frequentes
Preciso ter as duas pastas de trabalho abertas para a macro funcionar?
Sim, do jeito que o código foi montado neste artigo, a pasta de trabalho de destino precisa estar aberta no momento em que a macro roda. Se preferir que ela abra automaticamente, é possível adaptar o código para usar Workbooks.Open com o caminho completo do arquivo antes do laço de busca.
O que acontece se o código do produto não existir na outra planilha?
O Application.VLookup retorna o erro padrão do PROCV (#N/D) para aquela linha, e a macro escreve esse erro de volta na planilha de origem — funcionando como um aviso visual de que aquele item não tem correspondência na tabela de referência.
Essa técnica funciona se eu tiver mais de duas colunas para trazer da outra planilha?
Sim, mas você precisa repetir o Application.VLookup uma vez para cada coluna que quiser trazer, mudando apenas o número da coluna de retorno em cada chamada — ou adaptar o código para usar uma variável que percorra as colunas desejadas dentro do mesmo laço.
Veja também: Como Usar PROCV no VBA: 4 Exemplos Práticos.
Compartilhe ou Comente
Se você curtiu esse artigo aonde mostramos como fazer PROCV no VBA buscando dados em outra pasta de trabalho automaticamente, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.
Você já precisou cruzar dados entre dois arquivos Excel diferentes? Chegou a tentar automatizar essa busca com VBA antes? Conta para nós nos comentários!