Una macro de Excel para determinar si un libro está abierto

Una macro de Excel para determinar si un libro está abierto

Mientras piensa en abrir automáticamente libros de Excel, considere lo que puede suceder si intenta abrir un libro que ya está abierto. En el mundo que no es VBA, Excel intenta abrir el archivo nuevamente, con el mensaje que se muestra advirtiendo que se perderán los cambios no guardados. Puede protegerse contra este tipo de casos comprobando si un archivo determinado ya está abierto antes de intentar abrirlo de nuevo.

Una macro de Excel para determinar si un libro está abierto

Evite este mensaje de advertencia.

Cómo funciona la macro

Lo primero que debe notar acerca de esta macro es que es una función, no un procedimiento Sub. Como verá, hacer de esta macro una función le permite pasarle cualquier nombre de archivo para probar si ese archivo ya está abierto.

La esencia de este código es simple. Está probando un nombre de archivo determinado para ver si se puede asignar a una variable de objeto. Solo los libros abiertos se pueden asignar a una variable de objeto. Cuando intenta asignar un libro cerrado a la variable, se produce un error.

Si se puede asignar el libro de trabajo dado, el libro de trabajo está abierto; si ocurre un error, el libro se cierra.

Función FileIsOpenTest (TargetWorkbook como cadena) como booleano
'Paso 1: Declare sus variables
    Dim TestBook como libro de trabajo
'Paso 2: Dígale a Excel que se reanude en caso de error
    En caso de error, reanudar siguiente
Paso 3: intente asignar el libro de trabajo de destino a TestBook
    Establecer TestBook = Libros de trabajo (TargetWorkbook)
'Paso 4: si no se produjo ningún error, el libro de trabajo ya está abierto
    Si Err.Number = 0 entonces
    FileIsOpenTest = Verdadero
    Demás
    FileIsOpenTest = Falso
    Terminara si
Función final

Lo primero que hace la macro es declarar una variable String que contendrá el nombre de archivo que elija el usuario. TestBook es el nombre de su variable String.

En el paso 2, le dice a Excel que puede haber un error al ejecutar este código y, en caso de error, reanude el código. Sin esta línea, el código simplemente se detendría cuando ocurriera un error. Nuevamente, prueba un nombre de archivo determinado para ver si se puede asignar a una variable de objeto. Si se puede asignar el libro de trabajo dado, está abierto; si ocurre un error, se cierra.

En el paso 3, intenta asignar el libro de trabajo dado a la variable de objeto TestBook. El libro de trabajo que intenta asignar es una variable de cadena llamada TargetWorkbook. TargetWorkbook se pasa a la función en las declaraciones de función (consulte la primera línea del código). Esta estructura elimina la necesidad de codificar el nombre de un libro de trabajo, lo que le permite pasarlo como una variable.

En el Paso 4, simplemente verifica si ocurrió un error. Si no se produjo un error, el libro de trabajo está abierto, por lo que establece FileIsOpenTest en True. Si se produjo un error, el libro de trabajo no está abierto y establece FileIsOpenTest en False.

Nuevamente, esta función se puede usar para evaluar cualquier archivo que le pase, a través de su argumento TargetWorkbook. Ésta es la belleza de poner la macro en una función.

La siguiente macro demuestra cómo implementar esta función. Aquí, llama a la nueva función FileIsOpenTest para asegurarse de que el usuario no pueda abrir un archivo ya abierto:

Sub Macro1 ()

'Paso 1: Defina una variable de cadena

    Dim FName como variante

    Dim FNFileOnly As String

'Paso 2: El método GetOpenFilename activa el cuadro de diálogo

    FName = Application.GetOpenFilename (_

            FileFilter: = "Libros de Excel, *. Xl *", _

            Título: = "Elija un libro de trabajo para abrir", _

            Selección múltiple: = Falso)

'Paso 3: Abra el archivo elegido si aún no lo ha abierto

    Si FName <> False entonces

    FNFileOnly = StrReverse (Izquierda (StrReverse (FName), _

                 InStr (StrReverse (FName), ") - 1))

Cómo programar una reunión de Skype

Cómo programar una reunión de Skype

Aprenda a programar reuniones efectivas en Skype Empresarial desde Outlook o la aplicación de Skype. Siga nuestros sencillos pasos para una mejor colaboración.

Cómo usar Pegado especial en Excel 2016

Cómo usar Pegado especial en Excel 2016

Aprende a usar la función de Pegado Especial en Excel 2016 para optimizar la forma en que insertas datos en tus hojas de cálculo. Controla qué información se pega y realiza operaciones matemáticas simples con facilidad.

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Funciones de Excel para trabajar con números hexadecimales, octales, decimales y binarios

Descubre las funciones de Excel para convertir entre binario, octal, decimal y hexadecimal con esta tabla informativa y consejos útiles para optimizar tu trabajo.

Instalar y activar un complemento de Power Query de Excel

Instalar y activar un complemento de Power Query de Excel

Completa guía sobre cómo instalar y activar el complemento de Power Query en Excel 2010 y 2013, y su uso en Excel 2016. Aprende a gestionar datos de manera efectiva en Excel.

Access 2019: Cómo editar y modificar una base de datos de Access

Access 2019: Cómo editar y modificar una base de datos de Access

Aprende a modificar y editar bases de datos en Access 2019, incluyendo cómo nombrar campos, agregar y eliminar campos, y definir tipos de datos. ¡Optimiza tu trabajo con Access!

Cómo usar el comando Ir a en Word 2016

Cómo usar el comando Ir a en Word 2016

El comando Ir a en Word 2016 es una herramienta poderosa para navegar rápidamente a una página específica o a elementos dentro del documento. Aprende a optimizar tu flujo de trabajo con este práctico comando.

Cómo resaltar fechas de fin de semana en Excel

Cómo resaltar fechas de fin de semana en Excel

Aprende cómo resaltar fechas de fin de semana en Excel utilizando formato condicional para mejorar la gestión de tus datos de programación.

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Cómo insertar un enlace para enviar un correo electrónico en una hoja de cálculo de Excel 2010

Aprenda a insertar un hipervínculo "mailto" en Excel 2010 para crear correos electrónicos de manera simple y eficiente.

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Cómo usar las opciones de pegado y Pegado especial en Word 2007

Aprenda a utilizar las opciones de pegado y Pegado especial en Word 2007 para manejar eficazmente bloques de texto. Optimizando su formato y presentación.

Cómo modificar un gráfico SmartArt en PowerPoint

Cómo modificar un gráfico SmartArt en PowerPoint

Descubre cómo modificar un gráfico SmartArt en PowerPoint incluyendo cambios de diseño, estructura y texto. Mejora tus presentaciones con estos consejos SEO.