ON ERROR GOTO
Boa tarde, pessoal estou com um problema e esta me dando um trabalho danado, pode até ser coisa a toa mas não to conseguindo resolver, estou usando o On error Goto para verificar quando dá o erro de número 53 que é o file not found, e na primeira vez que dá o erro funciona belezinha , ai eu indico o caminho verto do proximo aquivo e vai na sequencia beleza, ai quando não encontra o problema ele já dá um erro normal e não entra no on erro goto. segue o codigo.
On Error GoTo SemArquivo
Voltar:
[ô]abre o arquivo de dados txt
Open Caminho For Input As #1
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 12, 9)
GoTo Continuar
[ô]End If
MsgBox [Ô]concluÃdo[Ô]
Close #7
Close #1
End
SemArquivo:
If Err.Number = [Ô]53[Ô] Then
If MsgBox([Ô]Os sistema não conseguiu localizar o arquivo de número ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô]. Existem outros arquivos para impressão? Erro de número: [Ô] & Err.Number, vbQuestion + vbYesNo) = vbYes Then
With Caixa
.InitDir = App.Path
.DialogTitle = [Ô]Escolha o arquivo do Bingo[Ô]
.Filter = [Ô]*.txt|*.txt[Ô]
.ShowOpen
End With
Caminho = Caixa.FileName
If Caminho = Empty Then
MsgBox [Ô]concluÃdo[Ô]
Close #7
Close #1
End
End If
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 10, 7)
Caminho = Mid(Caixa.FileName, 1, Len(Caixa.FileName) - 13)
Arquivo = Arquivo + 1
Caminho = Caminho & [Ô]ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô].txt[Ô]
GoTo Voltar:
End If
End If
On Error GoTo SemArquivo
Voltar:
[ô]abre o arquivo de dados txt
Open Caminho For Input As #1
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 12, 9)
GoTo Continuar
[ô]End If
MsgBox [Ô]concluÃdo[Ô]
Close #7
Close #1
End
SemArquivo:
If Err.Number = [Ô]53[Ô] Then
If MsgBox([Ô]Os sistema não conseguiu localizar o arquivo de número ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô]. Existem outros arquivos para impressão? Erro de número: [Ô] & Err.Number, vbQuestion + vbYesNo) = vbYes Then
With Caixa
.InitDir = App.Path
.DialogTitle = [Ô]Escolha o arquivo do Bingo[Ô]
.Filter = [Ô]*.txt|*.txt[Ô]
.ShowOpen
End With
Caminho = Caixa.FileName
If Caminho = Empty Then
MsgBox [Ô]concluÃdo[Ô]
Close #7
Close #1
End
End If
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 10, 7)
Caminho = Mid(Caixa.FileName, 1, Len(Caixa.FileName) - 13)
Arquivo = Arquivo + 1
Caminho = Caminho & [Ô]ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô].txt[Ô]
GoTo Voltar:
End If
End If
Humm... se o erro for diferente de 53?
O que a rotina irá fazer?
Não está faltando um Else?
O que a rotina irá fazer?
Não está faltando um Else?
Na verdade so entra ai se o erro for 53 e quando dá o proximo erra também é o 53 so que ele ignora o on error goto.
experimenta prever o erro usando a função DIR()?
if DRI(Caminho) = [Ô][Ô] then
msgbox [Ô]Arquivo não encontrado
end if
if DRI(Caminho) = [Ô][Ô] then
msgbox [Ô]Arquivo não encontrado
end if
Amigos, vale a pena lembrar a todos que não se deve impor um número de arquivo para o windows, e sim, [Ô]pedir gentilmente que ele nos dê um número para aquele arquivo[Ô], utilizando-se o método FreeFile se consegue esse número.
é a primeira coisa que eu faria...
é a primeira coisa que eu faria...
Simples, coloca um else em:
SemArquivo:
If Err.Number = [Ô]53[Ô] Then
******* sua rotina ************
else
msgbox [Ô]Erro nº. [Ô] & err.number
end if
err.clear [ô]zera o numero do erro para evitar eventuais falhas de identificação
o else vai identificar outras falhas e impedir execuções improvaveis
SemArquivo:
If Err.Number = [Ô]53[Ô] Then
******* sua rotina ************
else
msgbox [Ô]Erro nº. [Ô] & err.number
end if
err.clear [ô]zera o numero do erro para evitar eventuais falhas de identificação
o else vai identificar outras falhas e impedir execuções improvaveis
Citação:RCMRO escreveu:
experimenta prever o erro usando a função DIR()?
if DRI(Caminho) = [Ô][Ô] then
msgbox [Ô]Arquivo não encontrado
end if
Função Dir() é o caminho champz !!!
Voce tá usando uma instrução que não tem nada a ver com o que vc quer fazer. Por isso vc está tendo problemas.
Eu faço da seguinte forma:
On Error RESUME NEXT
do while true
[ô]abre o arquivo de dados txt
Open Caminho For Input As #1
if err.number = 53 then
If MsgBox([Ô]Os sistema não conseguiu localizar o arquivo de número ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô]. Existem outros arquivos para impressão? Erro de número: [Ô] & Err.Number, vbQuestion + vbYesNo) = vbYes Then
With Caixa
.InitDir = App.Path
.DialogTitle = [Ô]Escolha o arquivo do Bingo[Ô]
.Filter = [Ô]*.txt|*.txt[Ô]
.ShowOpen
End With
Caminho = Caixa.FileName
If Caminho = Empty Then
MsgBox [Ô]concluÃdo[Ô]
Close #7
Close #1
End
End If
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 10, 7)
Caminho = Mid(Caixa.FileName, 1, Len(Caixa.FileName) - 13)
Arquivo = Arquivo + 1
Caminho = Caminho & [Ô]ac[Ô] & Format(Arquivo, [Ô]0000000[Ô]) & [Ô].txt[Ô]
else
Arquivo = Caminho
Arquivo = Mid(Arquivo, Len(Arquivo) - 12, 9)
EXIT DO
endif
loop
on error goto 0
MsgBox [Ô]concluÃdo. ARQUIVO ENCONTRADO[Ô]
Close #7
Close #1
End
Tópico encerrado , respostas não são mais permitidas