Mensaje de libro no encontrado

Hola

Resulta que tengo este código a la hora de buscar un libro me dice que no se puede encontrar que compruebe la ortografía ........... Esta bien por que el libro no existe!!

Si busco uno que esta en la ruta lo muestra bien!!

Como se puede hacer que el mensaje que no se encontró el libro y compruebe la ruta y ortografía no aparezca y me aparezca el mensaje que tengo en el código que seria este

MsgBox "Por el momento no existen datos manuales con Fecha ( " & fecha & " ) ", 64, "Información"

Este es el código

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range) Dim l1 As Worksheet

Application.ScreenUpdating = False

'If Not Intersect(Target, Range("M5")) Is Nothing Then

Set l1 = ThisWorkbook.Sheets("Base dato")

'Set l2 = ThisWorkbook.Sheets("Base dato")

On Error GoTo por

Dim formato Dim fecha
ChDir \\ newton \ users\9Produc \ Caracterizaciones \


If Target.Text = "" Then Exit Sub

formato = Format(Range("M5"), "mm-y")

Workbooks.Open ("\\ newton\ users\ 9Produc \ Caracterizaciones \" & formato & ".xlsm")
Sheets("TABLERO GESTIÓN").Range("A1:Q34").Copy

l1.Range("B9").PasteSpecial _

Paste:=xlPasteValuesAndNumberFormats, _

Operation:=xlNone, _

SkipBlanks:=False, _

Transpose:=False

ActiveWorkbook.Save

ActiveWorkbook.Close

Hoja13.Select

Exit Sub

x:

fecha = Range("M5").Value
Sheets("Base dato").Range("B12:R42").ClearContents

MsgBox "Por el momento no existen datos manuales con Fecha ( " & fecha & " ) ", 64, "Información"
End Sub

Gracias de antemano

1 Respuesta

Respuesta
1

Por lo que veo ya has puesto la orden

On error goto x

Y en x muestras el mensaje.

Ahora debes poner estas dos lineas después

On error goto 0

Resume Next

La primera es para restablecer el sistema de errores, porque si no, los errores posteriores saltarían a x aunque no tuvieran nada que ver con que el libro no se haya encontrado.

Y la segunda es para el programa siga por la instrucción siguiente a donde se originó el error. Aunque si lo que quieres es que se abandone inmediatamente la subrutina no hay que ponerla. O si es necesario que se ejecute algo y después se abandone pones las órdenes necesarias ahí. Me parece que en tu caso no es necesaria la orden Resume Next

Pues es que me parece que lo que tienes te funciona bien, ¿no? Entonces no sé que pides exactamente.

Buenas gracias por responder..

Lo que pasa es cuando EJ:busco por un libro el 04-2013 aparece el error.

No se puede encontrar \\ newton \ users\9Produc \ Caracterizaciones \ 04-2013.xlsm'.Compruebe su ortografía o intente con una ruta diferente.

Yo se que ese libro 04-2013.xlsm no esta en la ruta pero como se puede hacer para que el mensaje de error que no se encontró no me aparezca y muestre solo el mensaje que esta en el código después de x..

Gracias.

He copiado y pegado la macro en una hoja. No funcionaba tal cual, he tenido que corregir algunas cosas y la he dejado así:

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim l1 As Worksheet
Application.ScreenUpdating = False
'If Not Intersect(Target, Range("M5")) Is Nothing Then
Set l1 = ThisWorkbook.Sheets("Base dato")
'Set l2 = ThisWorkbook.Sheets("Base dato")
On Error GoTo x
Dim formato
Dim fecha
ChDir ("\\newton \ users\9Produc \ Caracterizaciones \")
If Target.Text = "" Then Exit Sub
formato = Format(Range("M5"), "mm-y")
Workbooks.Open ("\\ newton\ users\ 9Produc \ Caracterizaciones \" & formato & ".xlsm")
Sheets("TABLERO GESTIÓN").Range("A1:Q34").Copy
l1.Range("B9").PasteSpecial Paste:=xlPasteValuesAndNumberFormats, _
     operation:=xlPasteSpecialOperationNone, _
     skipblanks:=False, _
     Transpose:=False
     ActiveWorkbook.Save
ActiveWorkbook.Close
Hoja3.Select
Exit Sub
x:
fecha = Range("M5").Value
Sheets("Base dato").Range("B12:R42").ClearContents
MsgBox "Por el momento no existen datos manuales con Fecha ( " & fecha & " ) ", 64, "Información"
End Sub

Respecto a lo que tenías he separado en dos esta línea

Private Sub Worksheet_Change(ByVal Target As Range) Dim l1 As Worksheet

He cambiado el "por" por x en esta

On Error GoTo por

He separado en dos líneas esta

Dim formato Dim fecha

He puesto paréntesis y comillas en esta

ChDir \\ newton \ users\9Produc \ Caracterizaciones \

He cambiado esta

Operation:=xlNone, _

por esta

operation:=xlPasteSpecialOperationNone, _

Y con estos cambios me funciona. No se cuáles fallos tienes tu en la macro y cuáles se deben a una mala transcripción. Pero si haces las correcciones o la copias toda entera tal cual la he escrito te debería funcionar y darte el mensaje que hay después de la x.

Si acaso no te funcionara pásame el fichero para comprobarlo a

Le he enviado el correo...

Gracias

He probado el fichero y a mi me funcionaba bien, es decir que solo me sale el mensaje que hay en la x.

Luego estuve buscando entre las opciones de Excel para ver si tenias alguna activada que yo no, pero no había ninguna que pudiera tener la culpa de eso.

Y finalmente he consultado en Internet y he visto que existe ese problema pero solo cuando la unidad es de red, por eso a mi no me aparece. Pues la solución no está en la macro sino que hay que hacer algo con el sistema operativo, no sé hasta que punto podrás hacerlo.

Te mando la página donde lo explica. Lamentablemente yo no puedo probarlo por no tener unidad de red, pero en lo que pueda ayudarte a ciegas te ayudaré.

Soporte Microsoft

Tampoco me sirve el fichero de reparación Microsoft Fix it que verás en esa hoja, me dice que no sirve para mi sistema operativo. Asi que aun puedo ayudarte menos.

Bueno te dejo con la página para ver si puedes resolverlo

Gracias de todas formas por tus respuesta y preocupación!!!

Encontre esta linea de código

Application.DisplayAlerts = False

Que me desactiva esa alerta me funciono bien con esa linea muchas gracias por todo...

Si, era una de las posibilidades que había barajado pero no era la solución ortodoxa. Acuérdate de poner justo después de la orden de abrir el libro esta otra línea

Application.DisplayAlerts = True

Para que otras alertas interesantes te aparecezcan después

En general no es bueno deshabilitar las alertas sino corregir los errores, pero en este caso está bien hecho siempre que hagas lo que te he dicho de restablecer inmediatamente después.

Si yo pudiera intentaría hacer la corrección que hay en esa página.

Añade tu respuesta

Haz clic para o