Las macros se utilizan a menudo para cortar, cortar y procesar información contenida en libros de trabajo. Esto supone, por supuesto, que el libro de trabajo que contiene la información está realmente abierto. Si no es así, obviamente su macro deberá incluir código para abrir el libro de trabajo necesario.

Abrir un libro de trabajo realmente puede ralentizar una macro; se necesita tiempo para acceder al disco y cargar el archivo. Por lo tanto, si su macro puede verificar si un libro de trabajo está abierto antes de pasar por la molestia de intentar abrirlo, podría acelerar mucho sus macros si se encuentra que el libro de trabajo ya está abierto.

Una forma muy flexible de abordar la tarea de verificar si un libro de trabajo está abierto es usar una función que realiza la verificación y luego simplemente devuelve un valor VERDADERO o FALSO en función de si el libro de trabajo está abierto. La siguiente macro breve realiza esta tarea sucinta:

Function AlreadyOpen(sFname As String) As Boolean     Dim wkb As Workbook     On Error Resume Next     Set wkb = Workbooks(sFname)

AlreadyOpen = Not wkb Is Nothing     Set wkb = Nothing End Function

Para usar la función, simplemente pásele el nombre del libro de trabajo que desea verificar, de la siguiente manera:

sFilename = "MyFileName.xls"

sPath = "C:\MyFolder\MySubFolder\"

If AlreadyOpen(sFilename) Then         'Do not have to open     Else         Workbooks.Open sPath & sFilename     End If

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios ExcelTips), he preparado una página especial que incluye información útil.

link: / excelribbon-ExcelTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (10985) se aplica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 y Excel en Office 365. Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:

link: / excel-Checking_if_a_Workbook_is_Already_Open [Comprobando si un libro de trabajo ya está abierto].