Las 10 formas más eficientes de referenciar libros y hojas en Excel

Índice de Contenido
  1. 1: Referenciar el libro de trabajo activo
  2. 2: Referenciar el libro de trabajo que está ejecutando el código
  3. 3: Referenciar libros de trabajo en la colección de libros de trabajo
  4. 4: Hacer referencia explícita a un libro de trabajo
  5. 5: Referenciar libros de trabajo por índice
  6. 6: Referenciar la hoja activa
  7. 7: Referenciar objetos de hoja de cálculo
  8. 8: Hacer referencia explícita a hojas
  9. 9: Referenciar hojas por índice
  10. 10: Hacer referencia a la propiedad de nombre de código de una hoja
  11. También puedes ver

1: Referenciar el libro de trabajo activo

La propiedad ActiveWorkbook de VBA se refiere al libro de trabajo con el enfoque. El libro de trabajo activo puede o no contener el código que hace referencia al libro de trabajo activo, lo cual es una distinción importante. Es perfectamente aceptable usar esta propiedad para referenciar el libro de trabajo activo desde el código dentro del libro de trabajo activo. Sin embargo, es invaluable cuando se hace referencia al libro de trabajo activo de forma remota.

Por ejemplo, después de pasar datos a un libro de trabajo activo, probablemente querrás guardar ese libro de trabajo, lo cual es una tarea sencilla con la propiedad ActiveWorkbook. Los procedimientos siguientes utilizan la propiedad ActiveWorkbook para cerrar el libro de trabajo activo:

Sub CerrarLibroActivoSinGuardar()
'Cerrar el libro de trabajo activo sin guardar.
    ActiveWorkbook.Close False
End Sub

Sub CerrarLibroActivoConGuardar()
'Cerrar el libro de trabajo activo y guardar.
    ActiveWorkbook.Close True
End Sub

Sub CerrarLibroActivo()
'Cerrar el libro de trabajo activo.
    'Permitir al usuario elegir si guardar.
    ActiveWorkbook.Close
End Sub

Por supuesto, también puedes combinar los tres procedimientos en una instrucción Select Case y utilizar una sola función para pasar un argumento condicional que especifique qué guardar ejecutar.

2: Referenciar el libro de trabajo que está ejecutando el código

La propiedad ThisWorkbook de VBA es similar a la propiedad ActiveWorkbook, pero mientras que ActiveWorkbook evalúa el libro de trabajo con el enfoque, ThisWorkbook se refiere al libro de trabajo que está ejecutando el código actual. Esta flexibilidad adicional es excelente porque el libro de trabajo activo no siempre es el libro de trabajo que está ejecutando el código.

3: Referenciar libros de trabajo en la colección de libros de trabajo

La colección de Workbooks contiene todos los objetos Workbook abiertos. Utilizando la propiedad Workbooks, puedes hacer referencia a los libros de trabajo abiertos. Por ejemplo, el siguiente subprocedimiento llena una lista en un formulario de usuario con los nombres de todos los libros de trabajo abiertos:

Private Sub UserForm_Activate()
'Poblar la lista con los nombres de los libros de trabajo abiertos.
    Dim wb As Workbook
    
    For Each wb In Workbooks
        ListBox1.AddItem wb.Name
    Next wb
End Sub

4: Hacer referencia explícita a un libro de trabajo

Si sabes el nombre del libro de trabajo al que deseas hacer referencia, una referencia explícita puede ser el método más eficiente. Aunque una referencia explícita es fácil, requiere una situación estable. Si el nombre del libro de trabajo cambia, pero las posibilidades son conocidas, aún puedes usar una referencia explícita pasando el nombre del libro de trabajo. Por ejemplo, el siguiente subprocedimiento activa un libro de trabajo abierto, según se determina por el argumento pasado, wbname:

Existe algún servicio de almacenamiento en red para individuos
Function ActivarLibro(wbname As String)
'Abrir wbname.
    Workbooks(wbname).Activate
End Function

Para ejecutarlo, simplemente pasas el nombre del libro de trabajo que deseas activar de la siguiente manera:

ActivarLibro("RecursosHumanos.xls")

(Debes incluir la extensión .xls).

5: Referenciar libros de trabajo por índice

Quizás el método menos estable para hacer referencia a un libro de trabajo es utilizar su valor de índice. Excel asigna valores de índice a los libros de trabajo a medida que los abres. El primer libro de trabajo abierto tiene un valor de índice de 1, el segundo libro de trabajo abierto tiene un valor de índice de 2, y así sucesivamente.

Los valores de índice presentan un problema especial porque cambian cuando eliminas un objeto Workbook de la colección; los valores de índice se desplazan hacia abajo en consecuencia. Por ejemplo, supongamos que tienes tres libros de trabajo abiertos con los siguientes valores de índice:

ExcelFuncionesEstadisticas — 3

0908002.xls – 2

Recetas de postres para hornear en Navidad

RecursosHumanos.xls – 1

Si una tarea en particular depende de que los tres libros de trabajo siempre estén abiertos, utilizar los valores de índice puede generar errores. Por ejemplo, la instrucción

Workbooks(1).Activate

activa RecursosHumanos.xls siempre que esté abierto. Si cierras RecursosHumanos.xls, ExcelFuncionesEstadisticas y 0908002.xls se desplazan hacia abajo: ExcelFuncionesEstadisticas se convierte en 2 y 0908002.xls se convierte en 1. Como resultado, la instrucción anterior activa 0908002.xls, no RecursosHumanos. Eso puede ser o no lo que deseas. Utilizar valores de índice para hacer referencia a libros de trabajo no está mal, pero debes comprender sus comportamientos inherentes para evitar errores que pueden ser difíciles de solucionar.

6: Referenciar la hoja activa

Si no especificas un calificador de objeto, la propiedad ActiveSheet se establece de forma predeterminada en la hoja activa en el libro de trabajo activo. Por ejemplo, para obtener el nombre de la hoja activa, usarías una función similar a la siguiente:

Function ObtenerHojaActiva() As String
    ObtenerHojaActiva = ActiveSheet.Name
End Function

Esta propiedad es de solo lectura, no puedes utilizarla para activar una hoja.

7: Referenciar objetos de hoja de cálculo

La colección Worksheets contiene todos los objetos de hoja en un libro de trabajo. Utilizando un simple bucle For Each, puedes recorrer la colección. Por ejemplo, el siguiente código llena un control de lista con los nombres de todas las hojas en el libro de trabajo activo:

Los 5 mejores artículos de Geekend del año 2009
Private Sub UserForm_Activate()
'Poblar la lista con los nombres de las hojas
'en el libro de trabajo activo.
    Dim ws As Worksheet
    
    For Each ws In Worksheets
        ws.Select
        ListBox1.AddItem ws.Name
    Next ws
End Sub

La colección Sheets y Worksheets contienen ambos objetos de hoja de cálculo, pero la colección Sheets contiene tanto hojas de cálculo como hojas de gráfico.

8: Hacer referencia explícita a hojas

Utiliza la propiedad Worksheets para hacer referencia explícita a una hoja. Por ejemplo, utiliza este tipo de referencia para eliminar una hoja específica de la siguiente manera:

Function EliminarHoja(nomHoj As String)
'Eliminar nomHoj.
    Application.DisplayAlerts = False
    Worksheets(nomHoj).Delete
    Application.DisplayAlerts = True
End Function

9: Referenciar hojas por índice

Los valores de índice son útiles cuando no te importan las hojas específicas, sino su número u orden. Es cierto que esa no será una tarea común, pero ocasionalmente, hacer referencia a los valores de índice puede ser útil. El siguiente procedimiento agrega y elimina hojas basándose en la cantidad de hojas que deseas:

Function ControlarNumeroHojas(intHojas As Integer)
'Agregar o eliminar hojas para que el número de hojas sea igual a intHojas.
    Application.DisplayAlerts = False
    'Eliminar hojas si es necesario
    While Worksheets.Count > intHojas
        Worksheets(1).Delete
    Wend
    'Agregar hojas si es necesario
    While Worksheets.Count < intHojas
        Worksheets.Add
    Wend
    Application.DisplayAlerts = True
End Function

Ten cuidado al ejecutar esta función porque elimina el primer objeto Sheet de la colección, incluso si esa hoja contiene contenido. Simplemente agrega y elimina hojas, dependiendo del valor que pases. Esta función es útil cuando se crean nuevos libros de trabajo programáticamente.

10: Hacer referencia a la propiedad de nombre de código de una hoja

El código que se refiere a un objeto Worksheet por el nombre en la pestaña de la hoja corre el riesgo de generar un error. Eso se debe a que debes recordar actualizar el código cuando cambias el nombre de la hoja. No solo eso es mucho problema, los usuarios suelen cambiar el nombre de una hoja. Una manera de proteger el código que se refiere a hojas específicas por nombre es utilizar la propiedad CodeName.

El nombre de código es el nombre predeterminado de la hoja, que Excel asigna cuando lo creas: Hoja1, Hoja2, y así sucesivamente. Cambiar el nombre de la hoja, como se muestra en la pestaña de la hoja, no cambia su nombre de código, como puedes ver en la Figura D. Los nombres entre paréntesis son los nombres de las hojas (como se muestran en las pestañas de las hojas). Observa que los nombres predeterminados, los nombres de código, permanecen iguales incluso si cambias el nombre de la hoja.

Los villanos más fascinantes del cine geek: Cuál te gusta más

También puedes ver

  • Cómo agregar una lista desplegable a una celda de Excel (Newsmatic)
  • Cómo convertirse en ingeniero de cloud: una hoja de referencia (Newsmatic)
  • 50 consejos para ahorrar tiempo y acelerar tu trabajo en Microsoft Office (descarga gratuita en PDF) (Newsmatic)
  • Calculadora de comparación de costos: G Suite vs Office 365 (Tech Pro Research)
  • Microsoft Office ha cambiado, la forma de usarlo también debería cambiar (ZDNet)
  • Los mejores servicios en la nube para pequeñas empresas (CNET)
  • Las mejores aplicaciones de lista de tareas para administrar tareas en cualquier plataforma (Download.com)
  • Más cobertura relacionada con Microsoft que debes leer (Newsmatic en Flipboard)

Divulgación de afiliados: Newsmatic puede recibir una comisión por los productos y servicios presentados en esta página.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Ultimas Noticias, allí encontraras muchos artículos similares a Las 10 formas más eficientes de referenciar libros y hojas en Excel , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.