APPLICATION
El objeto Application, es el objeto de mayor nivel dentro de la jerarquía de objetos VBA de
Excel y representa la instancia de Excel actual.
Este objeto contiene los valores y opciones de toda la aplicación y todos los métodos
necesarios para obtener objetos de nivel superior como Libros, Hojas y Celdas.
Por defecto no se suele especificar al hacer referencia a los objetos de trabajo, pero si lo
utilizamos para manipular las opciones y comandos de Excel.
Ejecutar la orden Abrir de la ficha Archivo (método FindFile)
Application. FindFile
Recalcular todas las fórmulas de los libros abiertos (método Calculate)
Application. Calculate
Activar/Desactivar las actualizaciones de pantalla (propiedad ScreenUpdating)
Application. ScreenUpdating = true | false
Activar/Desactivar los mensajes de alerta que se puedan producir durante la ejecución
de la macro (propiedad DisplayAlerts)
Application. DisplayAlerts = true | false
Cerrar el programa Excel (método Quit)
Application. Quit
Establecer una pausa en la ejecución de una macro (paraliza todos los procesos
excepto la impresión y actualizaciones en segundo plano) (método Wait)
‘Establece una pausa desde ahora hasta las 19:30
Application. Wait "19:30:00"
‘Establece una pausa durante 5 segundos aproximadamente
Application. Wait Hour (Now()) & “:” & Minute(Now()) & “:” & Second(Now()) + 5
WORKBOOKS
La colección más importante de objetos que nos ofrece Excel es WorkBooks que representa
todos los libros de trabajo actualmente abiertos en la sesión actual de trabajo.
Por medio de esta colección podemos crear o abrir libros de trabajo, o hacer referencia a
algún elemento de cualquier libro abierto.
Crear un nuevo libro de trabajo: (método Add)
Workbooks.Add
Crea un nuevo libro y lo añade a la colección de libros abiertos.
Conocer el total de libros abiertos actualmente. (propiedad Count)
Workbooks.Count
Si tenemos 3 libros abiertos actualmente esta propiedad contendrá el valor 3.
Abrir un libro existente: (método Open)
Workbooks. Open Filename:="Z:\DocumentosTrabajo\DatosTrabajo.xlsx"
Esta instrucción abrirá el archivo ubicado en “Z:\Documentos Trabajo\DatosTrabajo.xlsx” y lo
agregará a la colección de objetos Workbooks. De esta manera podemos abrir tantos
archivos como sean necesarios y para cada uno de ellos se creará un objeto Workbook el
cual será almacenado dentro de Workbooks.
Filename -> indica donde y qué nombre tiene el libro que deseamos abrir.
Una vez abierto un libro, podremos hacer referencia a él por medio de su nombre si lo
conocemos o del índice que ocupa dentro de la colección de libros abiertos.
Activar un libro para trabajar con su contenido: (método Activate)
Para el ejemplo anterior si deseamos activar el libro para trabajar sobre él escribiríamos la
siguiente orden:
WorkBooks ("DatosTrabajo.xlsx").Activate
O
WorkBooks (2).Activate “en el caso de qué el índice de la colección fuera 2”
Cerrar un libro abierto: (método Close)
WorkBooks ("DatosTrabajo.xlsx").Close
O
WorkBooks (2).Close “en el caso de qué el índice de la colección fuera 2”
ActiveWorkBook (Libro Actual)
Una vez que se ha activado un libro de la colección de libros abiertos, este se convierte en el
libro activo y para hacer referencia se utiliza el objeto ActiveWorkbook.
Por medio de este objeto podremos realizar cambios que afecten al libro de trabajo actual,
como guardar, guardar como o cerrar.
Guardar el libro actual: (método Save)
ActiveWorkbook.Save
Guardar el libro actual como: (método SaveAs)
ActiveWorkbook.SaveAs Filename:="W:\Documentos\Libro1.xlsx",
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Filename -> indica donde y con qué nombre tenemos que guardar el libro. La extensión del
archivo no es necesario indicarla, ya que Excel se la asigna en función del Formato de
Fichero indicado en FileFormat.
FileFormat -> Indica el formato con el que se guardará. Algunos de los valores admitidos
son:
xlOpenXMLWorkbook (Libro de Open XML xlsx versiones 2007/2013)
xlOpenXMLWorkbookMacroEnabled (Libro habilitado para macros xlsm)
xlWorkbookDefault (equivale a xlOpenXMLWorkbook)
xlExcel8 (Libro de Excel 97/2003)
xlText (Archivo de texto txt)
CreateBackup -> Indica si se ha de realizar una copia del libro original en el caso de que ya
exista.
Cerrar el libro actual: (método Close)
ActiveWorkbook.Close
WORKSHEETS
Para hacer referencia a una hoja de cálculo del libro abierto, se utiliza la
colección WorkSheets que representa las hojas de cálculo actuales del libro. Opcionalmente
también podemos trabajar con las hojas del libro con la colección Sheets.
WorkSheets (IndiceHoja) -> Hacer referencia a una hoja por su índice, siendo la 1ª hoja del
libro el índice 1, la segunda hoja el índice 2 y así sucesivamente.
WorkSheets (“NombreHoja”) -> Hacer referencia a una hoja por su nombre.
Teniendo un libro de 3 hojas, donde tenemos una hoja de nombre ‘Listado’.
Crear un duplicado de la hoja ‘Listado’ moviendo la copia a continuación de la
hoja 2: (método Copy)
WorkSheets ("listado").Copy After:=Sheets(2)
Teniendo un libro de X hojas, donde tenemos una hoja de nombre ‘Listado’.
Crear un duplicado de la hoja ‘Listado’ moviendo la copia a continuación de la
última hoja:
WorkSheets("listado").Copy After:= ActiveWorkbook.
Sheets(ActiveWorkbook.Sheets.Count)
Eliminar la hoja de nombre ‘Listado’ del libro actual: (método Delete)
Application. DisplayAlerts = False
WorkSheets ("listado").Delete
Application. DisplayAlerts = True
Para evitar que se muestren mensajes de aviso pidiendo confirmación a la hora de realizar la
eliminación de la hoja, desactivamos la propiedad DisplayAlerts del objeto Application, para
volverla a activar después de la eliminación.
Activar una hoja de cálculo de nombre ‘Listado’ del libro actual: (método Activate)
WorkSheets ("listado").Activate
RANGE
Uno de los objetos más utilizados para crear selecciones de celdas o rangos a través de las
macros es el objeto Range junto con el método (instrucción) Select, que representa el rango
que deseamos seleccionar.
Range(RangoASeleccionar).Select
RangoASeleccionar: Representa el rango que deseamos seleccionar. Se especifica
encerrado entre dobles comillas y puede ser una referencia a una celda, a un grupo de
celdas o a un nombre de rango. En todos estos casos las referencias se toman como
absolutas.
Al ejecutar esta instrucción Excel seleccionará todas las celdas que se indiquen en el
argumento RangoASeleccionar y ya podremos acceder o trabajar con ellas por medio del
objeto Selection que se comentaba al principio.
Range("A1").Select -> Selecciona la primera celda de la hoja.
Range("A1:B20").Select -> Selecciona el rango A1:A20.
Range("DATOS_PRODUCCION").Select -> Selecciona las celdas que forman el rango
DATOS_PRODUCCION.
Si deseamos crear selecciones de rangos relativos a partir de una selección, rango o celda
actual, tendremos que utilizar el método Offsetque nos permite indicar un desplazamiento de
filas y columnas.
Expresión.Offset(NFilas, NColumnas)
Expresión Variable que representa un objeto Range.
NFilas: número que representa la cantidad de filas a desplazarse. Si el
desplazamiento es hacia arriba el número se indicará en negativo.
NColumnas: número que representa la cantidad de columnas a desplazarse. Si el
desplazamiento es hacia la izquierda el número se indicará en negativo.
Los desplazamientos hacia abajo o a la derecha se indican con números en positivo y los
desplazamientos hacia arriba o a la izquierda con números negativos.
Crear una nueva selección con un desplazamiento de NFilas y NColumnas a
partir de la selección actual.
Selection.Offset(NFilas, NColumnas).Select
Seleccionar la celda situada 2 filas hacia abajo y 5 columnas a la derecha de la
selección actual y cambiarle el tipo de letra a ‘Times New Roman’, tamaño 14 y
negrita.
Selection.Offset(2,5).Select
With Selection.Font
.name="Times New Roman"
.Size=14
.Bold=True
End With
Crear una nueva selección con un desplazamiento de NFilas y NColumnas a partir de un
rango.
Range(RangoASeleccionar).Offset(NFilas, NColumnas).Select
Seleccionar la celda situada 3 filas hacia arriba y 2 columnas a la derecha a
partir de la celda F10 de la hoja actual.
Range("F10").Offset(-3,2).Select
Seleccionar la celda situada 3 filas hacia arriba y 2 columnas a la derecha a
partir de la celda F10 de la hoja de nombre ‘Listados’ y escribir una fórmula que
sume los números escritos en el rango B3:B30 de la hoja ‘Datos’.
WorkSheets("Listados").Activate
Range("F10").Offset(-3,2).Select
Selection.Formula="=SUM(Datos!B3:B30)"
Crear una nueva selección con un desplazamiento de NFilas y NColumnas a partir de la
celda Activa.
ActiveCell.Offset(NFilas, NColumnas).Select
Seleccionar la celda situada 1 fila hacia abajo y 2 columnas a la izquierda a partir
de la celda activa.
ActiveCell.Offset(1,-2).Select
Una vez seleccionadas, tendremos que hacer uso del objeto Selection para hacer referencia
a las celdas que se han seleccionado y sobre ellas ejecutar cualquier orden que se nos
ocurra: cambiar formatos, copiar datos, eliminar, introducir datos, escribir fórmulas, utilizarlo
como origen para nuevas instrucciones, etc…