El Modelo de Objetos Para Excel
Como creo que ya tenemos práctica en trabajar con el modelo de objetos, me limitaré a colocar los ejemplos y referencias entregadas por Microsoft respecto del Excel
Para el objeto Aplication tenemos por ejemplo:
Aplication.DisplayFormulaBar (True/False)
Aplication.ScreenUpdating (True/False)
Application.Calculate (recalcula todos los objetos de la aplicación)
El Objeto Workbook
El siguiente ejemplo abre la hoja "Libro1.xls" y muestra el valor de la celda A1 en una Msgbox
Sub OpenBook1()
Set myBook = Workbooks.Open(Filename:="Libro1.xls")
MsgBox myBook.Worksheets(1).Range("A1").Value
End Sub
Para guardar una plantilla Excell que contenga macros Micrososft recomienda hacerlo en el mismo directorio donde está el ejecutable de Excel, esto se recuperaría con
Sub OpenBook1()
EXEPath = Application.Path &_ Application.PathSeparator
fName = EXEPath & "BOOK1.XLS"
Set myBook = Workbooks.Open(Filename:=fName)
MsgBox myBook.Worksheets(1).Range("A1").Value
End SubOtra alternativa es guardarlo en un directorio que crea el Officce para estos efectos llamado Library, en este caso se recuperaría con:
Sub OpenBook1()
LibPath = Application.LibraryPath &_ Application.PathSeparator
fName = LibPath & "BOOK1.XLS"
Set myBook = Workbooks.Open(Filename:=fName)
MsgBox myBook.Worksheets(1).Range("A1").Value
End SubPara crear workbooks se usa el método Add para grabarlo por primera vez se usa SaveAs y para grabarlo las veces siguientes Save
Sub CreateAndSave() Set newBook = Workbooks.Add Do fName = Application.GetSaveAsFilename Loop Until fName <> False newBook.SaveAs Filename:=fName End SubPara cerrar un workbook se usa el método Close
Sub OpenChangeClose() Do fName = Application.GetOpenFilename Loop Until fName <> False Set myBook = Workbooks.Open(Filename:=fName) ' Hacer cambios a myBook myBook.Close savechanges:=False End Sub
El Objeto Range
Los diferentes métodos del objeto Range son:
ActiveCell BottomRightCell
Cells
ChangingCells
CircularReference
Columns
CurrentArray
CurrentRegion
Dependents
DirectDependents DirectPrecedents
EntireColumn
EntireRow
Next
Offset
PageRange
Precedents
Range
RowFields RowRange
Rows
Selection
TableRange1
TableRange2
TopLeftCell
UsedRange
VisibleRange
Algunos ejemplos prácticos
Para Usar Colocar el valor de la celda A1 en hoja1 Worksheets("hoja1").Range("A1").Value = 3 Colocar una fórmula en la celda activa Range("B1").Formula = "=5-10*RAND()" Colocar el valor 6 en el rango C1:E3 de la hoja activa Range("C1:E3").Value = 6 Limpiar el contenido del rango A1:E3 en la hoja activa Range("A1", "E3").ClearContents Colocar el atributo font.bold en el rango llamado "miRango" Range("miRango").Font.Bold = True Colocar un 3 en cada celda del rango llamado "miRango" de la hoja1 Range("Sheet1!miRango2").Value = 3 Establecer una variable de objeto para referir a un rango Set objRange = Range("miRango") Usando Números de línea o columna
Para Usar Colocar el valor de la celda A1 en Sheet1 Worksheets("Sheet1").Cells(1, 1).Value = 3 Colocar la fórmula en la celda B1 de la hoja activa Cells(1, 2).Formula = "=5-10*RAND()" Colocar una variable de objeto Set objRange = Worksheets("Sheet1").Cells(1, 1) Para selecciones multicolumna se usan loops, el ejemplo siguiente busca en el rango A1:D10 de la hoja Sheet1 y si encuentra un valor menor que 0.001 lo reemplaza por 0
Sub RoundToZero() For rwIndex = 1 to 4 For colIndex = 1 to 10 If Worksheets("Sheet1").Cells(rwIndex, colIndex) < .01 Then Worksheets("Sheet1").Cells(rwIndex, colIndex).Value = 0 End If Next colIndex Next rwIndex End Sub