Búsqueda de libros de trabajo que contienen macros (Microsoft Excel)
La empresa de Richard, como muchas otras, usa bastante Excel. De hecho, tienen miles y miles de libros de Excel que han recopilado a lo largo de los años. Richard necesita una forma de averiguar cuáles de esos libros de trabajo tienen macros VBA, sin la necesidad de abrir e inspeccionar cada libro de trabajo individualmente. Se pregunta si hay una manera fácil de hacer esto.
Una forma bastante simplista de encontrar todos sus libros de trabajo que contienen macros es simplemente buscar cualquier archivo que use las extensiones XLSM o XLSB.
Los libros de trabajo que contienen macros deben almacenarse en archivos con estas extensiones. Si bien no es 100% infalible, es un buen lugar para comenzar.
También puede utilizar las capacidades de búsqueda de Windows (fuera de Excel)
y busque cualquier archivo que contenga el texto «End Sub» o «End Function». Eso identificará rápidamente cualquier libro de trabajo candidato potencial, ya que cualquier procedimiento de VBA debe usar una de estas dos declaraciones al final.
Si está utilizando libros de trabajo heredados (aquellos desarrollados con el formato de archivo de Excel 2003), entonces realmente necesita mirar dentro de cada uno de los libros de trabajo. Esto se puede hacer mediante programación, lo que significa que podría tener una macro que abra cada libro de trabajo en una carpeta y lo examine para ver si hay macros dentro de él.
Por ejemplo, puede crear una macro que recorra cada uno de los archivos de un directorio y determine si el archivo es un libro de Excel. Luego puede abrir el archivo y verificar si tiene un proyecto VBA dentro de él.
Sub FindMacros() Dim sPath As String Dim sFile As String Dim sFoundFiles As String 'specify directory to use - must end in "\" sPath = "C:\MyData\Excel Data\" sFile = Dir(sPath) Do While sFile <> "" If InStr(sFile, ".xls") > 0 Then Workbooks.Open (sPath & sFile) If Workbooks(sFile).HasVBProject Then sFoundFiles = sFoundFiles & sFile & vbCrLf End If Workbooks(sFile).Close (False) End If sFile = Dir ' Get next filename Loop If Len(sFoundFiles) = 0 Then MsgBox "No workbooks found that contain macros" Else sFoundFiles = "The following workbooks contain macros:" & _ vbCrLf & vbCrLf & sFoundFiles MsgBox sFoundFiles End If End Sub
Este ejemplo utiliza la propiedad HasVBProject (introducida en el modelo de objetos de Excel en Excel 2007) para determinar si el archivo tiene macros o no. Cuando se completa, la macro muestra un cuadro de mensaje que enumera las hojas de trabajo que contienen macros.
_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 (12466) se aplica a Microsoft Excel 2007, 2010, 2013 y 2016.
Puede encontrar una versión de este consejo para la interfaz de menú anterior de Excel aquí:
link: / excel-Finding_Workbooks_Containing_Macros [Encontrar libros de trabajo que contienen macros]
.