Documentos de Académico
Documentos de Profesional
Documentos de Cultura
contenido y funcionalidad de Microsoft Excel esta dividido entre los diferentes objetos que
lo conforman.
1.1.1
Existen dos maneras de interactuar con los objetos de Excel: manualmente (usando la
interfaz de usuario) o a travs del cdigo usando Visual Basic. En la interfaz de usuario, se
usa el teclado, el Mouse o ambos, para desplazarse a una parte de la aplicacin que controla
los datos que usted desea cambiar o los comandos que desea usar.
Con las instrucciones de Visual Basic, usted navega a travs del modelo de objetos desde el
primer objeto de la jerarqua hasta el objeto con el contenido y funcionalidad que busca
utilizar, y finalmente usa las propiedades y mtodos de ese objeto para conseguir el
contenido y funcionalidad deseados. En el siguiente ejemplo, se usa una instruccin de
VBA para navegar a la celda B2 de la Hoja1 y cambiar su contenido.
Hoja1.Range(B3).Value = Hola
Dado que la interfaz de usuario y Visual Basic son dos formas de acceder a los mismos
contenidos y funcionalidad, muchos objetos, propiedades, y mtodos comparten nombres
con elementos de la interfaz de usuario. Esto significa que para cada accin de la interface
de usuario, existe una instruccin equivalente en Visual Basic.
Se debe resaltar que es importante entender el lugar que ocupa un objeto en la jerarquia de
objetos, porque antes de poder trabajar con un objeto, debe navegar a travs del modelo de
objetos hasta lograr alcanzarlo. Por ejemplo no puede acceder a una celda en particular sin
haber pasado primero por la aplicacin, la cual contiene el libro de trabajo, que a su vez
contiene la hoja de calculo que contiene la celda de inters.
1.1.2
Objetos coleccin
El objeto aplicacin
Se debe notar que muchas propiedades y mtodos que permiten devolver objetos frecuentes
de la interfaz de usuario pueden emplearse sin el calificador del objeto Application,
por ejemplo se puede hacer referencia a la celda activa (propiedad ActiveCell) de la
siguiente forma: en lugar de escribir Application.ActiveCell.Font.Bold =
True, puede escribir ActiveCell.Font.Bold = True.
1.3
El objeto Worksheet
Este objeto sirve para representar una hoja de clculo de un libro. El objeto Worksheet es
un elemento del conjunto Worksheets, que contiene todos los objetos Worksheet de
un libro.
Uso del Objteto Worksheet
Cuando se desarrolla una aplicacin en Excel, usualmente se requiere agregar hojas de
calculo nuevas al libro activo, hacer visibles o invisibles algunas de estas, leer y copiar
informacin en hojas, cambiar el formato de las celdas o limpiar su contenido, estas y otras
tareas se pueden realizar usando los mtodos y propiedades del objeto WorkSheet o el
objeto de conjunto WorkSheets. En los siguientes prrafos se presenta una introduccin
al manejo del objeto WorkSheet. El lector puede incluir las diferentes ordenes que a
continuacin se muestran, en el macro Hola usado en la seccin y ver que sucede.
Para referirse a una hoja de calculo de un libro se usa Worksheets(ndice), donde
ndice es el nombre o nmero de ndice de la hoja de clculo. El ejemplo siguiente oculta la
hoja de clculo uno del libro activo.
Worksheets(1).Visible = False
El uso del objeto WorkSheets puede resultar confuso y dificultar la lectura del cdigo, se
obtiene el mismo resultado anterior usando la instruccin:
Hoja1.Visible = False
Dado que es posible referirse a una hoja usando su nombre, el siguiente ejemplo asume que
se tiene un libro con una hoja nombrada Datos y guarda la sentencia Excel en la celda
(1,2).
Datos.cells(1,2).value = Excel
Se debe tener presente que el nmero de ndice de la hoja de clculo representa la posicin
de la hoja en la barra de etiquetas del libro. Worksheets(1) es la primera hoja (en el
extremo izquierdo) del libro y Worksheets(Worksheets.Count) es la ltima. En el
recuento de ndice se incluyen todas las hojas, aunque estn ocultas. Al mover una hoja
cambia el valor de su ndice, lo cual puede afectar la estructura de un programa, por esto se
recomienda en general referirse a las hojas usando su nombre.
Si una hoja de clculo es la hoja activa, puede usar la propiedad ActiveSheet para hacer
referencia a ella. El ejemplo siguiente usa el mtodo Activate para activar la hoja de
clculo Hoja1, establece la orientacin de pgina como horizontal y a continuacin
imprime la hoja de clculo.
Worksheets("Hoja1").Activate
ActiveSheet.PageSetup.Orientation = xlLandscape
ActiveSheet.PrintOut
Para un listado completo de los diferentes mtodos y propiedades del objeto WorkSheet,
se puede consultar la ayuda en lnea de Excel. En la Ilustracin 1 1, se pueden apreciar el
objeto Worksheets y los relacionados.
1.4
Objeto Range
Un objeto Range permite representar una celda, una fila, una columna o una seleccin de
celdas que contienen uno o ms bloques contiguos de celdas o un rango 3D. En la
Ilustracin 1 2, se puede apreciar los diferentes objetos relacionados con el objeto
Range.
1.4.1
En muchas situaciones prcticas se desea hacer referencia a un grupo de celdas (rango) para
usarlas por ejemplo como datos de un grfico, aplicarles un formato, introducir una frmula
o limpiar su contenido, estas y otras tareas se pueden realizar usando los mtodos y
propiedades del objeto Range. En los siguientes prrafos se presentan algunos ejemplos
del uso de este objeto. El lector puede incluir las diferentes ordenes que a continuacin se
indican, en el macro Hola usado en la seccin Error: Reference source not found, de tal
manera que pueda apreciar los resultados obtenidos.
Antes de iniciar el uso del objeto Range, se debe tener presente que para referirse a un
rango de una hoja, se usa la propiedad Range del objeto WorkSheet. Esta propiedad
devuelve un objeto de la clase Range, luego se usan los mtodos y propiedades de ste
objeto para lograr una caracterstica deseada. El ejemplo siguiente asigna el valor de la
celda A1 en la celda A5. Para ver en accin este macro agregue un valor en la celda A1 y
observe que sucede.
Hoja1.Range("A5").Value = Hoja1.Range("A1").Value
El ejemplo siguiente borra el contenido del rango A1:H8 y lo llena con nmeros aleatorios
asignando una frmula a cada celda del rango.
Hoja1.Range("A1:H8").ClearContents
Hoja1.Range("A1:H8").Formula = "=aleatorio()"
El uso del objeto Range se puede mejorar cuando se combina con la propiedad
Cells(fila, columna), la cual permite referirse a una celda usando los nmeros de
Se debe tener en cuenta que despus de activar la hoja de clculo, se pueden usar las
propiedades Range y Cells sin una declaracin explcita de la hoja, por lo tanto es
igualmente vlido escribir,
Hoja1.Activate
Cells(1, 2) = 40
Note que se omite la propiedad value
Cells(2, 2).Formula = "=seno(b1)"
REFERENCIA
DESCRIPCIN
Range("A1")
Celda A1
Range("A1:B5")
Celdas de la A1 a la B5
Range("C5:D9,G9:H16")
Range("A:A")
Columna A
Range("1:1")
Fila uno
Range("A:C")
Columnas de la A a la C
Range("1:5")
Range("1:1,3:3,8:8")
Range("A:A,C:C,F:F")
Columnas A, C y F
Tabla 1-1. Ejemplos de Uso del mtodo Range (Adatado de la Ayuda en Lnea).
1.4.2
final del rango que se desea devolver. El ejemplo siguiente establece el color de relleno de
las celdas B1:E10.
Hoja1.Range(Hoja1.Cells(1, 2), Hoja1.Cells(10, 5)).Interior.ColorIndex
= 5
Cuando se trabaja con el mismo rango en ms de una hoja, se debe utilizar la funcin Array
para especificar dos o ms hojas a seleccionar. El ejemplo siguiente da formato al borde de
un rango tridimensional de celdas.
Sub FormatoHojas()
Sheets(Array("Hoja2", "Hoja3", "Hoja5")).Select
Range("A1:H1").Select
Selection.Borders(xlBottom).LineStyle = xlDouble
End Sub
1.5
El objeto Charts
Para agregar un nuevo grfico al libro activo, se usa el mtodo Add del objeto Charts. El
ejemplo siguiente agrega un grfico al libro activo y sita la hoja nueva inmediatamente
despus de la hoja de clculo llamada "Hoja1".
Charts.Add after:=Worksheets("Hoja1")
Para agregar un grfico nuevo usando los datos contenidos en una hoja de clculo, puede
usar el mtodo Add junto con el objeto Range y la propiedad ActiveChart. El
siguiente ejemplo muestra como agregar un grfico de dispersin de los datos contenidos
en las celdas A1:B13 de la hoja de clculo llamada "Hoja1".
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:B13"),
PlotBy:= xlColumns
Se debe resaltar que existe una gran cantidad de funciones que permiten controlar el
aspecto y formato de un grfico, el usario debe notar que todas las caractersticas que puede
dar normalmente en Excel, se puede lograr a travs de cdigo en Visual Basic.
1.6
Objeto Shape
El objeto Shape representa una forma de la capa de dibujo, por ejemplo, una lnea, un
crculo, un cuadriltero, una forma libre, un objeto OLE o una imagen. El conjunto
Shapes contiene todas las formas de la capa de dibujo. Al trabajar con formas, existen tres
objetos que se pueden usar para representar formas de la capa de dibujo: el conjunto
Shapes, que representa todas las formas de un documento; el conjunto ShapeRange,
que representa un subconjunto especifico de las formas de un documento y el objeto
Shape, que representa una forma individual de un documento. Para trabajar con varias
formas al mismo tiempo se debe utilizar el conjunto ShapeRange o Shapes.
10
recomienda que el lector experimenta con estas ordenes, de tal forma que logre percibir las
posibilidades del objeto Shape.
Para agregar una nueva forma a un documento, se usa el mtodo
AddShape(Tipo,Parametros), donde tipo indica la clase de forma que se desea
agregar, un rectngulo, hexgono, estrella, etc. y los parmetros dependen del tipo de forma
que se adicione al documento, por ejemplo para definir un rectngulo se requieren dos
puntos. Para indicar el tipo de forma que se desea agregar se pueden usar las constantes
predefinidas en Excel, las cuales se pueden consultar en la ayuda en lnea (buscar propiedad
AutoShapeType). El siguiente ejemplo crea un crculo, le asigna un color de relleno y
cambia el tipo de lnea, se debe notar que se usa el mtodo Select para seleccionar la
forma adicionada.
Hoja1.Shapes.AddShape(msoShapeOval, 306.75, 143.25, 89.25,
96.75).Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 41
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Solid
Selection.ShapeRange.Line.ForeColor.SchemeColor = 51
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.DashStyle = msoLineDash
Para agrupar un rango de formas y devolver un nico objeto Shape que representa el
nuevo grupo formado, puede utilizar los mtodos Group o Regroup. Despus de formar
el grupo, puede trabajar con l de la misma manera que con cualquier otra forma.
Dibujo de lneas
El mtodo AddLine permite agregar una lnea nueva en el plano de dibujo del documento
activo, en el siguiente ejemplo se ilustra el uso del mtodo para agregar una lnea, darle
formato y rotarla.
Hoja1.Shapes.AddLine(63.75, 161.25, 251.25, 243.75).Select
Selection.ShapeRange.Flip msoFlipVertical
Selection.ShapeRange.Line.ForeColor.SchemeColor = 51
Selection.ShapeRange.Line.Visible = msoTrue
Selection.ShapeRange.Line.DashStyle = msoLineSquareDot
Selection.ShapeRange.IncrementRotation 20.36
1.7
11
Dado que desconoce como usar el objeto Chart, el cual permite realizar la tarea deseada,
puede usar el siguiente camino alternativo. Abra el men Herramientas> Macro>
Grabar Nueva macro..., inmediatamente debe aparecer el cuadro de macros
indicado en la Ilustracin 1 6, debe dar un nombre al macro o aceptar el sugerido por
defecto en Excel, si desea asignar una combinacin de teclas al macro lo puede hacer en el
cuadro de texto Mtodo abreviado, tambin puede indicar en donde guardar el macro y
12
agregar una descripcin de ste. Cuando halla realizado las tareas anteriores puede dar clic
en aceptar, debe aparecer la barra de grabado de macros, la cual permite indicar el fin del
macro o si desea realizar una pausa en el proceso de grabacin. Al dar clic en aceptar se da
inicio a la grabacin del macro, es decir a los diferentes pasos que usted realizar en Excel
para crear y dar formato a un grfico de dispersin usando los datos contenidos en una hoja;
una vez halla terminado de graficar, dar formato y agregar las lneas de tendencia o
comentarios que considere pertinentes haga clic en el botn detener grabacin [
]. Excel
genera todo el cdigo requerido para efectuar las tareas realizadas por usted y lo guarda en
un modulo de cdigo que se puede consultar usando el editor de Visual Basic.
a)
b)
Ilustracin 16. a) Cuadro de dialogo Grabar Macro. b) barra de herramientas
grabar
Para visualizar el cdigo generado, se debe ingresar al editor de Visual Basic (ver numeral
Error: Reference source not found), ir a la seccin Mdulos de la ventana proyecto y
hacer doble clic sobre el Modulo1 (en este ejemplo se supone que este es
el nico macro grabado), a continuacin debe aparecer la ventana del editor con
el cdigo generado por Excel, ver Ilustracin 1 7 y Tabla 1 -2.
13
Ahora puede modificar el cdigo generado por Microsoft Excel de tal forma que realice las
tareas deseadas, para tal fin no se requiere gran conocimiento de todos los mtodos y
propiedades del objeto Chart. Suponga que se desea indicar a VBA el rango de los datos a
graficar para que el automticamente efecte las tareas de formato por usted, para tal fin se
asume que en la las celdas D1 y E1 se indica el nmero de fila y columna de inicio del
rango, mientras en las celdas D2, E2 se indican la fila y columna fin del rango. Solo se
requiere remplazar las primera cuatro lneas de cdigo para obtener el resultado deseado.
Range("A1:B13").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:B13"),
PlotBy:= _
xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Grfico"
Se cambia por:
Fi=cells(1,4).value: Ci=cells(1,5).value
Ff=cells(2,4).value: Cf=cells(2,5).value
Nombre=cells(3,4).value
Range(cells(Fi,Ci),cells(Ff,Cf)).Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range(cells(fi,ci),cells(ff,cf)),
PlotBy:= _ xlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:=Nombre
Se debe notar que se supone que la hoja donde se encuentran los datos es la hoja activa, de
lo contrario las propiedades cells() deberan ser precedidas por el nombre de la hoja
donde se encuentran los datos (Hoja1.cells()), adicionalmente se han usado las
14
variables Fi, Ci, Ff, Cf para referirse a las celdas inicial y final del rango a graficar, de igual
manera se usa nombre para indicar el nombre del nuevo grfico, resaltando que no se
pueden usar nombres de hojas de grficos o clculo existentes dado que se producir un
error en tiempo de ejecucin.
De manera similar se puede proceder con todos los objetos considerados hasta el momento,
por ejemplo si desea conocer como dar formato a travs de cdigo a una hoja de clculo,
grabe un macro con todas las opciones de formato que desee, luego examine y use el
cdigo generado automticamente. Esta es una metodologa rpida y efectiva incluso si se
conocen los comando que se deben ejecutar para realizar una tarea especifica, dado que
puede evitar la escritura de gran parte del cdigo y slo basta con unas cuantas
modificaciones para tener una aplicacin funcionando como se desea.
Se debe notar que la facilidad que Excel brinda para la generacin y uso de cdigo, de
alguna manera libera parte de la tarea de estudiar detalladamente cada uno de los objetos y
mtodos de esta poderosa hoja de clculo. Esto permite que el usuario se centre en las
tareas de codificacin tpicas del lenguaje de programacin VBA, y por otro lado slo se
requiere tener presentes algunas ordenes bsicas que permitan interactuar con los diferentes
objetos de la aplicacin.
Finalmente se recomienda de manera muy especial, acompaar la lectura del cdigo
generado por Excel con la consulta de la ayuda en lnea, de esta forma se puede lograr una
mejor comprensin de las diferentes instrucciones.
Finalmente se debe notar que el cdigo que genera la grabadora de macros no es muy
eficiente o robusto, por lo tanto siempre resulta conveniente su edicin para as economizar
lneas de cdigo y mejorar su legibilidad.
Sub Grafico()
'
' Grafico Macro
' Macro grabada el 01/04/01 por Carlos Arturo Coronado R.
'
'
Range("A1:B13").Select
Charts.Add
ActiveChart.ChartType = xlXYScatterSmooth
ActiveChart.SetSourceData Source:=Sheets("Hoja1").Range("A1:B13"),
PlotBy:= _
XlColumns
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Grfico"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ejemplo del Uso de Macros"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Abscisas
(m)"
15
1.8
Examinador de objetos
16
Visual Basic para aplicaciones le permite crear nuevos objetos y recuperar otros ya
existentes en muchas aplicaciones Microsoft, adems otras aplicaciones (Pertenecientes a
17
otras compaas de software) tambin pueden proporcionar objetos que se pueden crear
usando Visual Basic. Si desea ms informacin sobre objetos, mtodos y propiedades que
proporciona una determinada aplicacin debe consultar su documentacin.
Para crear un objeto nuevo u obtener uno de otra aplicacin, debe usar las funciones
CreateObject o GetObject respectivamente, como se indica a continuacin:
' Arranca Microsoft Excel y crear un nuevo objeto Worksheet.
Set ExcelWorksheet = CreateObject("Excel.Sheet")
' Arranca Microsoft Excel y abre un objeto Worksheet ya existente.
Set ExcelWorksheet = GetObject("Hoja1.XLS")
' Arrancar Microsoft Word.
Set WordBasic = CreateObject("Word.Basic")
Finalmente, tenga presente que la mayor parte de las aplicaciones disponen de un mtodo
Exit o Quit que permite cerrar la aplicacin incluso cuando no est visible, esto puede
resultar de utilidad en algunas situaciones.
1.10 Conclusin
En esta seccin se han cubierto los aspectos y temas fundamentales del modelo de objetos
usado en Microsoft Excel.
Se dan algunas ideas sobre el uso de los diferentes objetos, resaltando los mtodos y
propiedades de mayor utilidad desde el punto de vista de desarrollo de aplicaciones de
ingeniera.
Se presenta una metodologa sencilla para lograr familiarizar al lector con los diferentes
objetos de Excel, para tal fin se requiere usar la herramienta grabar Macro. Sin embargo se
hace nfasis en la ineficiencia o redundancia de parte del cdigo generado de esta manera.
Se presenta el uso del Examinado de Objetos, como herramienta clave y fundamental para
la comprensin detallada del modelo y uso de los diferentes objetos de Excel.