ON ERROR GOTO

MEYB.JULLYS 27/11/2009 16:28:29
#328692
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
TECLA 27/11/2009 16:46:12
#328694
Humm... se o erro for diferente de 53?
O que a rotina irá fazer?
Não está faltando um Else?
MEYB.JULLYS 27/11/2009 16:47:18
#328695
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.
RCMRO 27/11/2009 17:04:16
#328697
Resposta escolhida
experimenta prever o erro usando a função DIR()?

if DRI(Caminho) = [Ô][Ô] then
msgbox [Ô]Arquivo não encontrado
end if
RRANGON 27/11/2009 17:07:48
#328698
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...
LORDAUTUNM 27/11/2009 18:20:10
#328706
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
LLAIA 28/11/2009 13:27:12
#328742
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.
EDERMIR 29/11/2009 22:53:40
#328814
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