Algumas
literaturas não dão muita importância ou até menosprezam este assunto. Não
consigo entender porque, já que no dia-a-dia é quase impossível não lançar mão
deste poderoso recurso do VBA.
Dependendo
do sistema que você está desenvolvendo, erros podem acontecer recorrentemente. Por
exemplo, você precisar abrir um arquivo que está em determinado diretório(“pelo
menos você pensava que ele estava lá”), porém foi excluído por algum
colaborador da sua empresa. Vejamos, se for apenas um arquivo, você pode tratar
com a condicional “If”. Por exemplo: If MeuArq.xlsm não for encontrado lá no
diretório que coloquei, “Então” “Msgbox” O arquivo não foi encontrado.
Porém,
isto só é possível em condições normais de temperatura e pressão, como vimos
acima. Mas considerando o capítulo anterior, quando dissemos que o gerente de
filiais precisava gerir 200 arquivos, você acredita que dá pra tratar com o
“If”? De jeito maneira.
Então,
vamos tratar as possíveis ocorrências de erros quando fomos rodar o sistema. Vamos
fazer algumas alterações no nosso código.
Perceba na
imagem, que mudei o nome do arquivo da Filial 1
no diretório. Vou tentar com isto, provocar um erro quando a código
tentar abrir o arquivo.
Veja o que
vai acontecer ao tentarmos abrir o arquivo da Filial 1.
Obviamente
my friend, não conseguiremos abrir o arquivo se ele tiver com o nome diferente.
Então vamos tratar isto para que não haja este retorno de erro! “Prestenção” e
veja como o ficou o código!!!
Sub TotalFiliaisArvore()
|
Dim NomArq 'declaramos
a variável que receberá o nome do arquivo que será aberto
|
Set ShtArv = Sheets("Árvore") 'declaramos a planilha que
receberá os dados
|
Lin = 2
|
Do While ShtArv.Cells(Lin, 1) <> "" 'agora percorremos todos os arquivos
no diretório à procura do que nos interessa
|
If
ThisWorkbook.Sheets("Árvore").Cells(Lin, 5) = "Abrir"
Then
|
On Error Resume Next 'trata o erro caso não seja
possível abrir o arquivo
|
Workbooks.Open
ShtArv.Cells(Lin, 2) 'se acharmos, vamos abri-lo. Perceba que agora estamos abrindo
pelo endereço que geramos na árvore
|
If
Err.Number <> 0 Then 'se houver
erro ao tentar abrir o arquivo, informe ao usuário
|
MsgBox
"O arquivo " & ShtArv.Cells(Lin, 2) & " não
encontra-se no diretório especificado!", vbOKOnly + vbCritical,
"ERRO AO TENTAR ABRIR O ARQUIVO"
|
Exit Sub 'sai da
rotina
|
End If
|
On Error
GoTo 0
|
NomArq =
ActiveWorkbook.Name 'captura o
nome do arquivo
|
'Após
abri-lo, precisamos pegar a informação que queremos e tranferí-la para o
nosso relatório.
|
With
ThisWorkbook.Sheets("Árvore")
|
.Cells(Lin, 4) =
ActiveWorkbook.ActiveSheet.Range("B2") 'e
finalmente, o valor
|
End With
|
Workbooks(NomArq).Close
'fechamos o arquivo, pois já pegamos a informação que
queriamos
|
End If
|
Lin = Lin + 1 'incremente
a linha para abrirmos o próximo arquivo
|
Loop
|
End Sub
|
Vamos
analisar com detalhes a alteração que fizemos no código.
On Error Resume Next 'trata o erro caso não seja
possível abrir o arquivo
|
Workbooks.Open
ShtArv.Cells(Lin, 2) 'se acharmos, vamos abri-lo. Perceba que agora estamos abrindo
pelo endereço que geramos na árvore
|
If
Err.Number <> 0 Then 'se houver
erro ao tentar abrir o arquivo, informe ao usuário
|
MsgBox "O arquivo
" & ShtArv.Cells(Lin, 2) & " não encontra-se no diretório
especificado!", vbOKOnly + vbCritical, "ERRO AO TENTAR ABRIR O ARQUIVO"
|
Exit Sub 'sai da
rotina
|
End If
|
On Error GoTo 0
|
Usamos
o “On Error Resume Next” antes de o código tentar abrir o arquivo. Isto vai
impedir o erro caso o arquivo não seja encontrado no diretório.
Logo
após, verificamos com “Err.Number”, se aconteceu algum erro e caso positivo,
disparamos uma mensagem para o usuário, que saberá que o arquivo não foi
encontrado. Logo após, saímos da rotina com “Exit Sub” e finalizando, fechamos
o bloco com “On Error GoTo 0”.
Simples
assim, essa medida dará mais profissionalismo ao código que você criou e o
usuário poderá identificar com facilidade se algo fugiu o padrão(no nosso caso,
o nome do arquivo que foi alterado por um colaborador da empresa, lembra?).
É
isso ai, nos vemos na próxima lição.
Para acessar o curso completo Clique aqui