Niveles de referencias a archivos, hojas y celdas en Excel vba
Cuando programamos macros es parte fundamental el hacer referencias a libros de trabajo, hojas y celdas, ya sea para leer datos o escribir datos en las últimas.
En la siguiente imagen vemos la jerquía de objetos en Excel.
Si de niveles hablamos. el primer nivel en la jerarquía de objetos es el objeto Application que se refiere a la aplicación Microsoft Excel, la cual, entre otras propiedades se encuentran:
-
Addins. Es la colección de complementos instalados en Excel, activos o no.
-
DisplayAlerts. Especifica si se mostrarán o no los avisos de Excel durante la ejecución de una macro.
-
Name. Es el nombre de Microsoft Excel como objeto.
-
OperatingSystem. Es el nombre del Sistema operativo actual.
-
ScreenUpdating. Se especifica si la pantalla se actualizara al momento de ejecutar una macro.
-
StatusBar. Devuelve o establece el texto en la barra de estado.
-
Worksheets. Es la colección de archivos abiertos en una instancia de Excel.
Ejemplos
‘Asigar un texto a la barra de estado.
Application.StatusBar = “Ejemplo de texto”
‘Devolver la cantidad de archivos abierto.
MsgBox Application.Workbooks.Count
Colección Workbooks
Es la colección de todos los archivos abiertos en Excel. El objeto Workbooks tiene los siguientes métodos importantes:
-
Add. Crea un nuevo archivo.
-
Close. Cierra un archivo.
-
Open. Abre un archivo.
Si tenemos varios archivos abiertos y deseamos hacer referencia al archivo activo, podemos utilizar:
-
ActiveWorkbook.
-
ThisWorkbook.
Si el archivo que deseamos aplicarle un método del objeto Workbooks es diferente al archivo activo, podemos utilizar:
-
Workbooks(“Archivo.xlsx”).Método
Ejemplos
‘Cerrar el Libro2.
Workbooks(“Libro2.xlsx”).Close
‘Abrir un archivo.
Workbooks.Open (“C:\Users\Sergio A Campos H\Documents\Archivo.xlsx”)
Colección Sheets
Es la colección de las hojas que tiene un libro de Excel. El objeto Worksheets tiene los siguientes métodos:
-
Add. Crea una nueva hoja.
-
Copy. Copia la hoja activa.
-
Delete. Elimina una hoja.
-
Select. Activa una hoja.
-
[Propiedad] Visible. Define si una hoja es visible o no.
Otras referencias que podemos manejar las hojas de cálculo son:
-
ActiveSheet. Es la hoja activa.
-
Worksheets. Similar a Sheets.
Ejemplos
‘Añadir una hoja.
Sheets.Add
‘Ocultar la hoja 2.
Sheets(“Hoja2”).Visible = False
‘Mostrar la cantidad de hojas en el libro.
MsgBox Worksheets.Count
Objeto Range
Se refiere a un conjunto de celdas, filas o columnas en una hoja de cálculo. El objeto Range tiene los siguientes métodos:
-
Activate. Activa una sola celda.
-
AddComment. Agrega un comentario.
-
AutoFit. Ajusta el ancho de una columna o tamaño de una fila.
-
Clear. Borra un rango o celda, incluido el formato.
-
ClearContents. Borra el contenido de un rango.
-
Copy. Copia un rango.
-
Select. Selecciona una celda o todo un rango.
De la misma manera el objeto Range tiene entre otros, las siguientes propiedades:
-
Address. Devuelve la dirección del rango.
-
Count. Devuelve la cantidad de celdas del rango.
-
CurrentRegion. Se refiere a la región actual en base a la celda activa.
-
EntireColumn. Se refiere a la columna completa.
-
EntireRow. Se refiere a la fila completa
-
FormulaLocal. Se refiere a una fórmula en el rango actual establecida en el idioma del usuario.
-
Offset. Se refiere a un rango desplazado hacia cualquier dirección.
-
Value. Devuelve o establece un texto a un rango.
Si deseamos referirnos sólo a una celda, podemos usar:
-
ActiveCell. Se refiere a la celda activa.
-
Range(“A1”). Se refiere a la celda A1.
-
[A1]. Se refiere a la celda A1.
Ejemplos
‘Asignar un valor a un rango.
Range(“A1:A10”).Value = “Texto”
‘Asignar una fórmula a una celda.
Range(“B1”).FormulaLocal = “=CONTARA(A1:A10)”
4 maneras de ingresar un valor a una celda
Para asignar un valor a una celda, nos podemos ir de lo particular a lo general, todo dependiendo de si estamos en la hoja donde está celda o referirnos a una celda en otra hoja y otro libro.
[A1].Value = “A”
Range(“A2”).Value = “B”
Sheets(“Hoja1”).Range(“A3”).Value = “C”
Workbooks(“Libro1”).Sheets(“Hoja1”).Range(“A4”).Value = “D”