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 Sub

Otra 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 Sub

Para 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 Sub

Para 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

Lección 6

tombrad@webhost.cl
http://fly.to/arica