Necesito un mensaje para un error que se produce al ejecutar una macro en vba

Tengo un error que se me produce al ejecutar una macro cuando el libro esta cerrado, y necesito un mensaje que me alerte y me diga por favor revise si su libro si esta abierto y así eliminar el mensaje del fallo.

Como seria el mensaje y donde se situaría.

5 respuestas

Respuesta
1

Estas son las instrucciones que necesitas, on error goto resume next hace que la macro salte ele error y continué con la macro, si encuentra un error manda un mensaje de alerta y pondrá el el numero de error en 0 para que no se quede en memoria y afecte la macro después.

on error resume next

'linea que produce el error (amarilla)

if err.number>0 then msgbox("Tienes al archivos cerrado")

on error goto 0

Respuesta
1

Además de controlar los errores mediante rutinas propias del VBA, como las que propone James Bond, y quizá antes de ponernos a elaborar rutinas "pesadas" que verifiquen en "estricto" si un archivo está abierto, quizá podrías verificar si entre los libros abiertos está el tuyo y listo:

Dim Libro As Workbook
For Each Libro In Workbooks
    If LCase(Libro.Name) = "NombredetuArchivo.xlsx" Then
       'aquí lo que tengas que hacer
    Else
       MsgBox "El archivo está cerrado, ábralo"
    End If
Next

 Comentas

Abraham Valencia

¡Gracias!

Saludos Abram: te envío lo que he echo y me da error:

Sub CargarLista()
Dim Libro As Workbook
For Each Libro In Workbooks
If LCase(Libro.Name) = "Projektphotos.xlsx" Then
cbo_Nombre.Clear
Sheets("Projektphotos").Select
Range("A2").Select
Do While Not IsEmpty(ActiveCell)
cbo_Nombre.AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Else
MsgBox "Die Tabelle Projektphotos ist zu, Bitte öffnen es"
End If
Next
Loop
End Sub

Eusebio

Otra vez:

Esa hoja "Projektphotos" ¿está en el libro que debe estar abierto? Y el objeto "cbo_Nombre ¿también?

Abraham Valencia

Respuesta
1

Si tu libro está cerrado puedes anexar una rutina para abrir tu libro, por ejemplo:

Sub Verifica_Libro()
    nombre_archivo = "archivo.xlsm"     'Aquí pon el nombre de tu archivo con todo y extensión
    '
    abierto = False
    For Each archivo In Application.Workbooks
        If UCase(archivo.Name) = UCase(nombre_archivo) Then
            abierto = True
            Exit For
        End If
    Next
    If abierto = False Then
        res = MsgBox("Su libro no está abierto. Desea abrirlo", vbYesNo + vbQuestion)
        If res = vbYes Then
            'puedes poner una función para abrir tu libro
            Workbooks.Open nombre_archivo
            continuar = True
        End If
    Else
        continuar = True
    End If
    '
    If continuar = True Then
        '
        'aquí continuas con tu código, porque el libro está abierto o bien ya lo abriste
        '
    Else
        'termina el programa
        Exit Sub
    End If
End Sub
Respuesta
1

¿Por qué si ya responden algunos, otros hacen lo mismo sin aportar nada nuevo?

Respuesta
1

Esto quizás aporte algo más

https://youtu.be/nLx4LLbRgYA 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas