1. MANIPULANDO ARQUIVOS COM O
VBA
My
friends, vamos tratar de um assunto que é, digamos, “importantibilissimo” para
profissional que deseja trabalhar com a programação VBA.
Não
serão poucas as vezes que você precisará varrer diretórios à procura de
arquivos que precisam ser abertos ou pelo menos catalogados.
Se
ficou difícil entender, deixa eu dar um exemplo: Imagine que você precise criar
um código para o José Firmino, que é um gerente de filiais de uma grande
empresa. Imagine que ele receba todos os meses, arquivos de relatório de vendas
de todas as filiais, que são 200, eu disse 200. Receber 2 ou 3 arquivos e abri-los
para ver o resultado seria mole, não sendo necessário confeccionar um código
VBA para isto. Mas agora, 200, a história é outra.
Sendo
assim, vamos criar o procedimento que abrirá os arquivos no diretório que você
salvou e capturará os totais das filiais mais rápido que imediatamente. Então,
prestenção!
Crie uma
planilha com esta e nomeie “Vendas Filiais”
Você
precisará ainda, de arquivos no diretório que criamos para que os mesmos sejam
abertos.
No meu caso, fiz 5 arquivos que ficaram com este conteúdo.
Inseri
os valores em cada arquivo de 1000 a 5000, sempre na célula B3.
Agora
vamos usar o código abaixo para abrirmos os arquivos e capturar o total de
vendas de cada filial.
Sub TotalFiliais()
|
Dim NomArq 'declaramos
a variável
|
'Usamos o "Dir" para identificar no diretório os
arquivos que queremos abrir.
|
'Perceba que usei um "*.xlsx". Aqui, estou querendo
dizer que não nos interessa o que vem antes da extensão.
|
'logo, vamos abrir apenas os arquivos com extensão xlsx.
Obviamente, faço isto porque os nomes dos arquivos
|
'são diferentes, porém, a extensão é a mesma.
|
NomArq = Dir(CamPad & "*.xlsx")
|
Do While NomArq <> "" 'agora
percorremos todos os arquivos no diretório à procura do que nos interessa
|
Workbooks.Open CamPad
& NomArq 'se
acharmos, vamos abri-lo.
|
'Após
abri-lo, precisamos pegar a informação que queremos e tranferí-la para o
nosso relatório.
|
Lin =
ThisWorkbook.Sheets("Vendas Filiais").Cells(Rows.Count,
1).End(xlUp).Row + 1 'capturamos a última linha não preenchida
|
With ThisWorkbook.Sheets("Vendas Filiais")
|
.Cells(Lin, 1) = ActiveWorkbook.Path 'capturamos o diretório do arquivo
|
.Cells(Lin, 2) =
ActiveWorkbook.FullName 'capturamos
o endereço completo
|
.Cells(Lin, 3) =
ActiveWorkbook.Name 'capturamos
o nome do arquivo
|
.Cells(Lin, 4) =
ActiveWorkbook.ActiveSheet.Range("B2") 'e finalmente,
o valor
|
'criamos
aqui um Hyperlink para facilitar os nossos futuros acessos às pastas e os
arquivos.
|
.Hyperlinks.Add Anchor:=Cells(Lin, "A"),
Address:=Cells(Lin, "A")
|
.Hyperlinks.Add Anchor:=Cells(Lin, "B"), Address:=Cells(Lin,
"B")
|
End With
|
Workbooks(NomArq).Close 'fechamos o
arquivo, pois já pegamos a informação que queríamos
|
NomArq = Dir 'chamamos o próximo arquivo
|
Loop
|
End Sub
|
Para
facilitar a compreensão do código, coloquei o mesmo em vermelho e os
comentários em verde.
Uma
observação que jugo importante, refere-se ao Hyperlink que criamos nas coluna
“A” e “B”. E para que fizemos isto? Pense! Se já rodamos a macro, por que não
pegarmos o endereço do diretório onde o arquivo está para abrirmos os arquivos
de forma bem simples e rápida.
Após
rodarmos o código, o resultado será este.
Muito
tranquilo, não?! Nos vemos na próxima lição!