Evitar error 53 en File1

Otra vez amigazo, molestándote, con tu ultima respuesta funcionó bien este proyecto, solo tengo la ultima pregunta, ojala me quieras ayudar y es esta:

Tengo un text1, en el cual pongo un nombre de algún archivo .txt que tengo en una carpeta

Al dar enter, desde un file1 se elige el archivo con el nombre elegido y se ve su contenido en otro text2, hasta aquí funciona bien, pero si por ejemplo en el text1 en lugar de escribir banco

Se escribe por equivocación banca me manda el error 53 de que no localiza el archivo y claro no existe, mi favor es, algún código que en lugar de mandarme el error 53 me mande un msgbox de aviso, para poder rectificar y así evitar que se cierre el programa al dar aceptar en el "aviso error 53" mi código que tengo es este:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
File1.FileName = Text1.Text & ".txt"

Dim nuevalinea As String, LTexto As String, Texto As String, Archivo As String
nuevalinea = Chr$(13) + Chr$(10)
Archivo = File1.Path & "\" & File1.FileName
Open Archivo For Input As #1
Do Until EOF(1)
Line Input #1, LTexto
Texto = Texto & LTexto & nuevalinea
Loop
Text2.Text = Texto
Close #1
On Error Resume Next
End If
End Sub

.....................................................................

Private Sub Form_Load()
File1.Pattern = "*.txt"
File1.Path = App.Path & "\Archivo"
On Error Resume Next
End Sub

Es esto con lo que trabaja, solo me falta resolver lo del error 53, pues es todo y de antemano gracias, un abrazo desde Puebla, Mexico

1 respuesta

Respuesta
1

'¿4c7569735f50
el error te lo da en esta linea verdad?
Open Archivo For Input As #1
entonces lo que debes hacer es no utilizar on error resume next
debes tener un sub que trate los errores interceptados mediante un select case

ejemplo:
Sub prueba()
On Local Error GoTo errores
MsgBox "a" + 1
MsgBox "hola"
errores:
If Err.Number <> 0 Then miserrores (Err.Number)
End Sub
Sub miserrores(en As Long)
Select Case en
Case Is = 13
MsgBox "ha ocurrido un error", vbCritical
Case Is = 53
MsgBox "ha ocurrido otro un error", vbCritical
End Select
End Sub

En este ejemplo generamos un error 13 pues le sumamos 1 a un msgbox y este error es interceptado y tratado en el segundo sub
captas la idea?

Que tal amigo ,primero te agradezco por responder tan pronto,y luego con tu ejemplo le hice así:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
File1.FileName = Text1.Text & ".txt"
Dim nuevalinea As String, LTexto As String, Texto As String, Archivo As String
nuevalinea = Chr$(13) + Chr$(10)

Archivo = File1.Path & "\" & File1.FileName
Open Archivo For Input As #1
Do Until EOF(1)
Line Input #1, LTexto
Texto = Texto & LTexto & nuevalinea
Loop
Text2.Text = Texto
Close #1
prueba"""""""""aquí puse el nombre del sub prueba()
End If
End Sub

............................................aquí el ejemplo que me diste
Sub prueba()
On Local Error GoTo errores
MsgBox "a" + 1
MsgBox "hola"
errores:
If Err.Number <> 0 Then miserrores (Err.Number)
End Sub
Sub miserrores(en As Long)
Select Case en
Case Is = 13
MsgBox "ha ocurrido un error", vbCritical
Case Is = 53
MsgBox "ha ocurrido otro un error", vbCritical
End Select
End Sub.....................................................................
Private Sub Form_Load()
File1.Pattern = "*.txt"
File1.Path = App.Path & "\Archivo"
On Error Resume Next
End Sub

si así era el ejemplo ,no me funcionó y si no era así te pido de favor me ayudes ,estoy estudiando esto de forma autodidacta y pues aun estoy muy piedra en esto de vb,pero bueno confío en tu paciencia y si me corriges mi código estaría mejor ,y bien de nuevo gracias y saludos

La idea no era "insertar todo el ejemplo en tu codigo", no te funcionara así

Lo que trato de explicar es la forma en como trabajar los errores en tiempo de ejecucion

La idea es que en el sub en el que deseas capturar los errores como primera linea pongas

on error goto errores

Es decir: ante un error vaya a la "etiqueta Errores"

Luego al fin del sub en el que estas capturando el error pones la etiqueta

Errores:

if err.number >0 then miserrores (Err.Number)

luego de esto nada mas que en sub

Esta ultima linea se ejecuta siempre y cuando ha ocurrido un error en el sub asi si err. Number>0 entonces pasa el numero de error al sub miserrores()

el sub miserrores() debe estar alojado en un modulo ( no de clase) y debe ser declarado como public

asi:

public sub miserrores(en as long)

En donde en es el argumento ( numero de error que le pasas desde la etiqueta errores: )

Gracias brother ,eres un expertazo,pues por fin quedo, y ya no tuve el error 53, dejo mi ejemplo por si le sirve a alguien mas ,ya que yo pase horas buscando en la web algún código y nada:

Private Sub Text1_KeyPress(KeyAscii As Integer)

On Error GoTo errores
errores:
If Err.Number <> 0 Then miserrores (Err.Number)
If KeyAscii = 13 Then
KeyAscii = 0
File1.FileName = Text1.Text & ".txt"
Dim nuevalinea As String, LTexto As String, Texto As String, Archivo As String
nuevalinea = Chr$(13) + Chr$(10)
Archivo = File1.Path & "\" & File1.FileName
Open Archivo For Input As #1
Do Until EOF(1)
Line Input #1, LTexto
Texto = Texto & LTexto & nuevalinea
Loop
Text2.Text = Texto
Close #1
End If
End Sub
.....................................................................
Private Sub Form_Load()
File1.Pattern = "*.txt"
File1.Path = App.Path & "\Archivo"
On Error Resume Next
End Sub

........................................................................

y en un modulo así

Public Sub miserrores(en As Long)
Select Case en
Case Is = 53
MsgBox "El Archivo no existe, "vbCritical
End Select
End Sub

pues de nuevo estoy en deuda contigo,gracias por ayudar en forma desinteresada

que sigas teniendo éxito profesional y hasta pronto,un abrazo desde Puebla,Mexico

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas