VBA Excel
Application Object
Econ. Carlos Ricci
Noviembre 2022
Excel Object Model
El "Excel Object Model" es la biblioteca de todos los objetos de Excel. Es
decir, en Microsoft Excel, todo es un objeto.
Application
AddIns Windows Workbooks
Charts Names VBProjects Windows Worksheets
Comment Hyperlink Name PageSetup PivotTables Range
Recordar la jerarquía de los objetos.
En lenguaje VBA:
Application.Workbooks("Book1.xlsx")
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1")
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1")
Objetos ordenados según Jerarquía
Plenamente calificada:
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value=100
Forma abreviada:
Asume objetos activos como
Range("A1").Value=100
ActiveSheet y ActiveWorkbook
Plenamente calificada:
Application.Workbooks("Book1.xlsx").Worksheets("Sheet1").Cells.ClearContents
Forma abreviada:
Asume objetos activos como
Cells.ClearContents
ActiveSheet y ActiveWorkbook
Objetos: Propiedades y Métodos
Una propiedad es un atributo de un objeto.
Un método es un procedimiento que se aplica a un objeto.
método
propiedad
WorkBooks
Activar
Workbooks("Book1").Activate 'Se activa un libro específico (por nombre)
Workbooks(1).Activate 'Se activa el libro de posición 1 (índice)
Agregar
Workbooks.Add 'Se agrega un nuevo libro
Contar:
Workbooks.Count 'Cuenta el numero de libros abiertos
Abrir
Workbooks.Open("C:\example.xlsm")
Workbooks.Open Filename "C:\example.xlsm"
Cerrar
Workbooks("Book1").Close SaveChanges:=True
Guardar
Workbooks("Book1").Save
Workbooks("Book1").SaveAs NombreArchivo
Econ. Carlos Ricci | [email protected] VBA Excel
WorkBooks
Nombre
Workbook.Name 'Error. Debe especificar nombre o índice
ActiveWorkbook.Name 'Libro activo al momento de ejecutarse la macro
ThisWorkbook.Name 'Libro que contiene la macro
ActiveWorkbook.Path
ActiveWorkbook.FullName
ThisWorkbook.Path
ThisWorkbook.FullName
WorkSheets
Activar
Sheets("Hoja1").Activate 'Se activa una hoja específica (por nombre)
Sheets(1).Activate 'Se activa una hoja de posición 1 (índice)
Agregar
Sheets.Add 'Se agrega una nueva hoja
Contar:
Sheets.Count 'Cuenta el numero de hojas abiertas
Seleccionar
Sheets("Hoja1").Select 'Se selecciona una hoja específica (nombre)
Sheets(1).Select 'Se selecciona una hoja de posición 1 (índice)
Copiar
Sheets("Hoja1").Copy Before:=Sheets("Hoja2")
¿Sheets o
Eliminar
Sheets("Hoja1").Delete
WorkSheets?
WorkSheets
Nombre
Sheets.Name 'Error. Debe especificar nombre o índice
ActiveSheet.Name 'Nombre de hoja activa
Sheets.Add.Name = "NuevaSheet" 'Libro que contiene la macro
Ocultar
Sheets("Sheet1").Visible = False 'Para cambiar la propiedad, digite True
Sheets("Sheet1").Visible = xlSheetHidden 'xlSheetVisible
Sheets("Sheet1").Visible = xlSheetVeryHidden
Proteger
Sheets("Sheet1").Protect
Sheets("Sheet1").Protect "Password"
Desproteger
Sheets("Sheet1").Unprotect
Sheets("Sheet1").Unprotect "Password"
Range y Cells
Activar Celda Eliminar
Range("B3").Activate Range("A1:B3").Delete
Cells(3,2).Activate Range("A1:B3").Delete shift:=xlShiftToLeft
Seleccionar Rango Limpiar
Range("a1:a3").Select Range("A1:A3").Clear
Range(Range("a1"), Range("a3")).Select Range("A1:A3").ClearContents
Range(Cells(1, 1), Cells(3, 1)).Select Range("A1:A3").ClearFormat
Cambiar tamaño Contar
Range("B3").Resize(2, 2).Select Range("A1:A3").Count
Desplazamiento Unir/Dividir
Range("B3").Offset(2, 2).Select Range("A1:A3").Merge
Range("A1:A3").UnMerge
Copiar
Range("A1:B3").Copy Range("D1") Valor
Range("A1:A3").Value = 5
Cortar
Cells(1,1).Value = 100
Range("A1:B3").Cut Range("D1")
Range y Cells
Algunas combinanciones útiles
Range("B3").CurrentRegion.Select
UltFila = [A:A].Range("A65536").End(xlUp).Row
UltFila = Columns("A:A").Range("A1048576").End(xlUp).Row
UltFila = Range(Range("A65536").End(xlDirection.xlUp).Address).Row
UltFila = Cells.SpecialCells(xlLastCell).Row
UltColumn = Cells.SpecialCells(xlLastCell).Column
Rows y Columns
Activar Fila Activar Columna
Rows(1).Activate Columns(1).Activate
Rows("1:1").Activate Columns("A:A").Activate
Range("a1").EntireRow.Activate Range("a1").EntireColumn.Activate
Alto de fila Ancho de columna
Range("a1").EntireRow.RowHeight = 30 Range("a1").EntireColumn.ColumnWidth = 30
Eliminar fila Eliminar columna
Range("A1").EntireRow.Delete Range("A1").EntireColumn.Delete
Contar filas Contar columnas
Range("A1").Rows.Count Range("A1").Columns.Count
Insertar fila Insertar columna
Range("A1").EntireRow.Insert Range("A1").EntireColumn.Insert
Range("1:1").Copy Range("A:A").Copy
Range("5:5").Insert Range("E:E").Insert
BUCLES
FOR-NEXT:
For Contador = Inicio To Fin [Step Incremento]
[instrucciones]
[Exit For]
[instrucciones]
Next [Contador]
DO WHILE:
Do [{ While | Until } condicion ] Do
[instrucciones] [instrucciones]
[Exit Do] [Exit Do]
[instrucciones] [instrucciones]
Loop Loop [{ While | Until } condicion ]
FOR EACH:
For Each elemento In grupo
[instrucciones]
[Exit For]
[instrucciones]
Next [ element ]
Econ. Carlos Ricci | [email protected] VBA Excel
CONDICIONALES
IF-THEN:
If condition Then
[instrucciones]
[ ElseIf condicion_alter Then
[instrucciones]]
[ Else
[instrucciones]]
End If
VBA Excel
Application Object
Econ. Carlos Ricci
Noviembre 2022