1
OBJE OBJETO TOS S DE DE MIC MICRO ROSO SOFT FT EXCE EXCEL L
En este numeral se introduce el modelo de objetos de Microsoft Excel y se explica como el contenido y funcionalidad de ésta aplicación, se divide en objetos discretos. Luego se describen algunos de los objetos de mayor uso durante el trabajo rutinario en Visual Basic para Excel de igual manera se ofrecen sugerencias para la exploración de las propiedades y métodos de los diferentes objetos. Es importante resaltar !ue para lograr el m"ximo provec#o de la programación en Visual Basic para Excel, resulta fundamental entender el modelo de objetos de éste $ltimo, de tal manera !ue se pueda #acer uso de su enorme potencial.
1.1 1.1
Mode Modelo lo de obje objeto tos s de de Exce Excel l
El conteni contenido do y funcio funcional nalida idad d de una aplica aplicació ción n como como Micros Microsoft oft Excel, se divide divide en unidades discretas llamadas objetos, !ue tienen contenidos y funciones funciones relacionadas. %sted de alguna manera est" familiari&ado con algunos de estos objetos a través de elementos de la interfa& de usuario de la aplicación como por ejemplo, libros, #ojas de c"lculo, rango de datos, #ojas de gr"fico. El mayor o primer objeto en Excel, es el objeto Application , el cual es o representa el mismo Excel. El objeto Application contiene otros objetos a los cuales solo se puede acceder acceder cuando la aplica aplicació ción n existe existe o esta esta corrie corriendo. ndo. 's( 's( el )bjeto )bjeto Application de Microsoft Excel contiene el objeto WorkBook. *ado !ue el objeto WorkBook depende de la Existencia del objeto Application para su propio existencia, se dice !ue el objeto Workbook es un #ijo del objeto Application . Muc#os objetos !ue son #ijos, también tienen #ijos por su cuenta. +or ejemplo, el objeto contie iene ne,, o es el padr padre, e, de la cole colecc cció ión n de obje objeto toss WorkSheets , !ue WorkBook cont representa todas las #ojas de un libro. 'dem"s un objeto padre puede tener varios #ijos, m"s a$n un #ijo puede tener varios padres, esto $ltimo, se puede entender mediante una analog(a con la información genética !ue cada uno de nosotros posee, la cual es una me&cla de informac informacion iones es de diferent diferentee origen origen y gracia graciass a eso tenemo tenemoss una gran variedad variedad de caracteres genot(picos. La manera en !ue est"n organi&ados organi&ados los objetos !ue conforman conforman una aplicación, aplicación, respecto respecto a los otros, junto con la forma en !ue el contenido y funcionalidad est"n divididos entre todos los los obje objeto tos, s, se deno denomi mina na jerarquía de objetos o modelo modelo de objeto objetoss, En resumen el
OBJETOS DE MICROSOFT EXCEL
2
contenido y funcionalidad de Microsoft Excel esta dividido entre los diferentes objetos !ue lo conforman. 1.1.1
Interfaz y modelo de objeto
Existen dos maneras de interactuar con los objetos de Excel manualmente -usando la interfa& de usuario o a través del código usando Visual Basic. En la interfa& de usuario, se usa el teclado, el Mouse o ambos, para despla&arse a una parte de la aplicación !ue controla los datos !ue usted desea cambiar o los comandos !ue desea usar. /on las instrucciones de Visual Basic, usted navega a través del modelo de objetos desde el primer objeto de la jerar!u(a #asta el objeto con el contenido y funcionalidad !ue busca utili&ar, y finalmente usa las propiedades y métodos de ese objeto para conseguir el contenido y funcionalidad deseados. En el siguiente ejemplo, se usa una instrucción de VBA para navegar a la celda B2 de la Hoja1 y cambiar su contenido. Hoja1.Range(“B3”).Vale " “Hola”
*ado !ue la interfa& de usuario y Visual Basic son dos formas de acceder a los mismos contenidos y funcionalidad, muc#os objetos, propiedades, y métodos comparten nombres con elementos de la interfa& de usuario. Esto significa !ue para cada acción de la interface de usuario, existe una instrucción e!uivalente en Visual Basic. 0e debe resaltar !ue es importante entender el lugar !ue ocupa un objeto en la jerar!uia de objetos, por!ue antes de poder trabajar con un objeto, debe navegar a través del modelo de objetos #asta lograr alcan&arlo. +or ejemplo no puede acceder a una celda en particular sin #aber pasado primero por la aplicación, la cual contiene el libro de trabajo, !ue a su ve& contiene la #oja de calculo !ue contiene la celda de interés. 1.1.2
Objetos colección
%n objeto /olección, es un objeto !ue contiene un conjunto de objetos relacionados. +or ejemplo el objeto WorkSheets representa el conjunto de todas la #ojas de c"lculo de un libro, mientras !ue el objeto WorkSheet se refiere a una #oja en particular. Los objetos colección se pueden utili&ar para devolver un objeto de esa colección o para reali&ar la misma operación a todos los objetos en una colección *ada.
1.2
El objeto aplicación
Las propiedades del )bjeto 'plicación controlan la apariencia de la ventana de Excel o el comportamiento de la aplicación por completo. +or ejemplo el valor de Scren#p$ating es falso cuando la actuali&ación de pantalla se encuentra des#abilitada. 'dicionalmente, las propiedades del objeto aplicación dan acceso a objetos de niveles inferiores en la jerar!u(a de objetos tales como, las colecciones de Ventanas -1indo2s !ue representan todas las ventanas abiertas actualmente y las colecciones de libros -Workbooks !ue representan todos los libros abiertos.
OBJETOS DE MICROSOFT EXCEL
3
'lgunos métodos y propiedades !ue aplican para el objeto Application , también aplican para otros objetos en niveles m"s bajos. 'l usar estos métodos al nivel del objeto aplicación, también se aplican en los objetos de nivel inferior. +or ejemplo, el método %alclate aplica para los objetos Application& Workbook ' Worksheet . 'l usar Application.%alclate se recalculan todas las #ojas de calculo -WorkSheets en todo los libros - Workbooks abiertos, mientras !ue el uso de este método al nivel de libro -Workbook o 3oja de calculo -WorkSheet permite un mayor control. El ejemplo siguiente crea un objeto #oja de c"lculo de Microsoft Excel en otra aplicación y, a continuación, abre un libro en Microsoft Excel. Set l " %reatebject(*+cel.Hoja*) l.Application.Workbooks.pen *ne,olib.ls*
0e debe notar !ue muc#as propiedades y métodos !ue permiten devolver objetos frecuentes de la interfa& de usuario pueden emplearse sin el calificador del objeto Application , por ejemplo se puede #acer referencia a la celda activa -propiedad Acti,e%ell de la siguiente forma en lugar de escribir Application.Acti,e%ell.-ont.Bol$ " re, puede escribir Acti,e%ell.-ont.Bol$ " re.
1.3
El objeto Workseet
Este objeto sirve para representar una #oja de c"lculo de un libro. El objeto Worksheet es un elemento del conjunto Worksheets , !ue contiene todos los objetos Worksheet de un libro. Uso del Objteto Worksheet
/uando se desarrolla una aplicación en Excel, usualmente se re!uiere agregar #ojas de calculo nuevas al libro activo, #acer visibles o invisibles algunas de estas, leer y copiar información en #ojas, cambiar el formato de las celdas o limpiar su contenido, estas y otras tareas se pueden reali&ar usando los métodos y propiedades del objeto WorkSheet o el objeto de conjunto WorkSheets . En los siguientes p"rrafos se presenta una introducción al manejo del objeto WorkSheet. El lector puede incluir las diferentes ordenes !ue a continuación se muestran, en el macro Hola usado en la sección y ver !ue sucede. +ara referirse a una #oja de calculo de un libro se usa Worksheets(/n$ice)& donde (ndice es el nombre o n$mero de (ndice de la #oja de c"lculo. El ejemplo siguiente oculta la #oja de c"lculo uno del libro activo. Worksheets(1).Visible " -alse
El uso del objeto WorkSheets puede resultar confuso y dificultar la lectura del código, se obtiene el mismo resultado anterior usando la instrucción Hoja1.Visible " -alse
OBJETOS DE MICROSOFT EXCEL
4
*ado !ue es posible referirse a una #oja usando su nombre, el siguiente ejemplo asume !ue se tiene un libro con una #oja nombrada 4 Datos” y guarda la sentencia Excel en la celda -5,6. 0atos.cells(1&2).,ale " “+cel”
0e debe tener presente !ue el n$mero de (ndice de la #oja de c"lculo representa la posición de la #oja en la barra de eti!uetas del libro. Worksheets(1) es la primera #oja -en el extremo i&!uierdo del libro y Worksheets(Worksheets.%ont) es la $ltima. En el recuento de (ndice se incluyen todas las #ojas, aun!ue estén ocultas. 'l mover una #oja cambia el valor de su (ndice, lo cual puede afectar la estructura de un programa, por esto se recomienda en general referirse a las #ojas usando su nombre. 0i una #oja de c"lculo es la #oja activa, puede usar la propiedad Acti,eSheet para #acer referencia a ella. El ejemplo siguiente usa el método Acti,ate para activar la #oja de c"lculo 3oja5, establece la orientación de p"gina como #ori&ontal y a continuación imprime la #oja de c"lculo. Worksheets(*Hoja1*).Acti,ate Acti,eSheet.ageSetp.rientation " lan$scape Acti,eSheet.rintt
+ara un listado completo de los diferentes métodos y propiedades del objeto WorkSheet , se puede consultar la ayuda en l(nea de Excel. En la 7lustración 5 85, se pueden apreciar el objeto Worksheets y los relacionados.
Ilustración 1–1. Objeto WorkSheet y relacionados.
1.!
Objeto "an#e
%n objeto Range permite representar una celda, una fila, una columna o una selección de celdas !ue contienen uno o m"s blo!ues contiguos de celdas o un rango 9*. En la 7lustración 5 86, se puede apreciar los diferentes objetos relacionados con el objeto Range.
OBJETOS DE MICROSOFT EXCEL
5
Ilustración 1–2. Objetos relacionados con el objeto Range
1.!.1
$so del objeto "an#e
En muc#as situaciones pr"cticas se desea #acer referencia a un grupo de celdas -rango para usarlas por ejemplo como datos de un gr"fico, aplicarles un formato, introducir una fórmula o limpiar su contenido, estas y otras tareas se pueden reali&ar usando los métodos y propiedades del objeto Range. En los siguientes p"rrafos se presentan algunos ejemplos del uso de este objeto. El lector puede incluir las diferentes ordenes !ue a continuación se indican, en el macro Hola usado en la sección Error :eference source not found, de tal manera !ue pueda apreciar los resultados obtenidos. 'ntes de iniciar el uso del objeto Range , se debe tener presente !ue para referirse a un rango de una #oja, se usa la propiedad Range del objeto 1or;0#eet. Esta propiedad devuelve un objeto de la clase Range , luego se usan los métodos y propiedades de éste objeto para lograr una caracter(stica deseada. El ejemplo siguiente asigna el valor de la celda '5 en la celda '<. +ara ver en acción este macro agregue un valor en la celda '5 y observe !ue sucede. Hoja1.Range(*A*).Vale " Hoja1.Range(*A1*).Vale
El ejemplo siguiente borra el contenido del rango '53= y lo llena con n$meros aleatorios asignando una fórmula a cada celda del rango. Hoja1.Range(*A14H5*).%lear%ontents Hoja1.Range(*A14H5*).-or6la " *"aleatorio()*
*e forma alternativa se puede usar, Hoja1.Acti,ate Range(*A14H5*).%lear%ontents Range(*A14H5*).-or6la " *"aleatorio()*
El uso del objeto Range se puede mejorar cuando se combina con la propiedad %ells(7ila& col6na) , la cual permite referirse a una celda usando los n$meros de
OBJETOS DE MICROSOFT EXCEL
6
la fila y columna correspondientes. El siguiente ejemplo asigna el valor de >? a la celda B5 y luego calcula el seno de ésta cantidad. Worksheets(1).%ells(1& 2).Vale " 89 Acti,eSheet.%ells(2& 2).-or6la " *"seno(b1)*
0e debe tener en cuenta !ue después de activar la #oja de c"lculo, se pueden usar las propiedades Range ' %ells sin una declaración expl(cita de la #oja, por lo tanto es igualmente v"lido escribir, Hoja1.Acti,ate %ells(1& 2) " 89 :;ote <e se o6ite la propie$a$ ,ale %ells(2& 2).-or6la " *"seno(b1)*
+ara devolver parte de un rango se debe usar la sentencia epresi=n.%ells(7ila> col6na)& donde expresión es una referencia !ue devuelve un objeto Range& mientras !ue fila y columna son relativas a la es!uina superior i&!uierda del rango. El ejemplo siguiente establece la fórmula de la celda /<. Hoja1.Range(*c4c19*).%ells(1& 1).-or6la " *"89?2*
La siguiente tabla muestra algunas posibilidades de uso del método :ange.
REFERENCIA
DESCRIPCIÓN
Range(*A1*)
Celda A1
Range(*A14B*)
Celdas de la A1 a la B5
Range(*%40@&@4H1*)
Selección de varias áreas
Range(*A4A*)
Columna A
Range(*141*)
Fila uno
Range(*A4%*)
Columnas de la A a la C
Range(*14*)
Filas de la uno a la cinco
Range(*141&343&545*)
Filas uno, tres y ocho
Range(*A4A&%4%&-4-*)
Columnas A, C y F
Tabla 1-1. je!"los de #so del !$todo Range %&datado de la &yuda en '(nea).
1.!.2
$so de los objetos "an#e y %ells
+ara devolver un objeto :ange se puede usar el estilo de referencia Range(cel$a1& cel$a2)& donde celda5 y celda6 son objetos :ange !ue especifican las celdas inicial y
OBJETOS DE MICROSOFT EXCEL
7
final del rango !ue se desea devolver. El ejemplo siguiente establece el color de relleno de las celdas B5E5?. Hoja1.Range(Hoja1.%ells(1& 2)& Hoja1.%ells(19& )).Cnterior.%olorCn$e "
+uede obtener el mismo resultado usando la instrucción 1it#, la cual resulta particularmente $til para manejar objetos, as( la instrucción anterior es e!uivalente a With Hoja1 .Range(.%ells(1& 2)& .%ells(19& )).Cnterior.%olorCn$e " +n$ With
0e debe observar el punto delante de cada propiedad /ells. El punto es necesario si el resultado del enunciado 1it# precedente se aplica a la propiedad /ells, en cuyo caso se indica !ue las celdas est"n en la #oja de c"lculo uno -sin el punto, la propiedad /ells devolver(a las celdas de la #oja activa. ' lo largo de este documento se #ace uso extensivo de los objetos :ange y /ells por lo tanto se tendr" tiempo de explorar sus posibilidades. 1.!.3
&rabajar con ran#os 3'
/uando se trabaja con el mismo rango en m"s de una #oja, se debe utili&ar la función 'rray para especificar dos o m"s #ojas a seleccionar. El ejemplo siguiente da formato al borde de un rango tridimensional de celdas. Sb -or6atoHojas() Sheets(Arra'(*Hoja2*& *Hoja3*& *Hoja*)).Select Range(*A14H1*).Select Selection.Bor$ers(lBotto6).ineSt'le " l0oble +n$ Sb
El ejemplo siguiente aplica el método -illAcrossSheets para transferir los formatos y datos del rango de la Hoja2 a los rangos correspondientes de todas las #ojas de c"lculo del libro activo. Sb Rellenaro$o() Worksheets(*Hoja2*).Range(*A14H1*) .Bor$ers(lBotto6).ineSt'le " l0oble Worksheets.-illAcrossSheets (Worksheets(*Hoja2*) .Range(*A14H1*)) +n$ Sb
1.(
El objeto %arts
El objeto /harts representa el conjunto de las #ojas de gr"ficos existentes en un libro especifico o activo. /ada #oja de gr"ficos est" representada por un objeto %hart . 0in embargo al reali&ar el conteo de los objetos chart de un libro, no se incluyen los gr"ficos incrustados en #ojas de c"lculo, en este caso se re!uiere referirse a estos gr"ficos embebidos #aciendo una llamada al objeto !ue los contiene -una #oja de c"lculo. En la
OBJETOS DE MICROSOFT EXCEL
7lustración /hart.
8
5 89, se pueden observar los diferentes objetos relacionados con el objeto
Ilustración 1–*. Objeto +hart y relacionados.
Uso del Objeto Chart
/uando se desarrolla una aplicación de ingenier(a, la presentación gr"fica de la información facilita la interpretación de los resultados y la detección de errores, para éste fin en Excel se pueden agregar #ojas de gr"ficos !ue representen la información contenida en las #ojas de c"lculo del libro activo. %na ve& creado un gr"fico, resulta de igual importancia su formato y caracter(sticas. Estas y otras tareas se pueden reali&ar usando los métodos y propiedades del objeto %hart o el objeto de conjunto %harts. En los siguientes p"rrafos se presenta una introducción al manejo del objeto %hart. El lector puede incluir las diferentes ordenes !ue a continuación se indican, en el macro Hola, de tal manera !ue pueda apreciar los diferentes resultados. En caso de existir #ojas de gr"ficos en el libro activo, se las puede imprimir usando el método rintt como indica la siguiente instrucción %harts.rintt
+ara agregar un nuevo gr"fico al libro activo, se usa el método A$$ del objeto %harts. El ejemplo siguiente agrega un gr"fico al libro activo y sit$a la #oja nueva inmediatamente después de la #oja de c"lculo llamada @Hoja1 @. %harts.A$$ a7ter4"Worksheets(*Hoja1*)
+ara agregar un gr"fico nuevo usando los datos contenidos en una #oja de c"lculo, puede usar el método A$$ junto con el objeto Range y la propiedad Acti,e%hart . El siguiente ejemplo muestra como agregar un gr"fico de dispersión de los datos contenidos en las celdas A14B13 de la #oja de c"lculo llamada @3oja5@. %harts.A$$ Acti,e%hart.%hart'pe " lDEScatterS6ooth Acti,e%hart.SetSorce0ata Sorce4"Sheets(*Hoja1*).Range(*A14B13*)& lotB'4" l%ol6ns
OBJETOS DE MICROSOFT EXCEL
9
Acti,e%hart.ocation Where4"locationAs;eFSheet& ;a6e4"*+je6plo*
0e debe resaltar !ue existe una gran cantidad de funciones !ue permiten controlar el aspecto y formato de un gr"fico, el usario debe notar !ue todas las caracter(sticas !ue puede dar normalmente en Excel, se puede lograr a través de código en Visual Basic.
1.)
Objeto *ape
El objeto Shape r epresenta una forma de la capa de dibujo, por ejemplo, una l(nea, un c(rculo, un cuadril"tero, una forma libre, un objeto )LE o una imagen. El conjunto Shapes contiene todas las formas de la capa de dibujo. 'l trabajar con formas, existen tres objetos !ue se pueden usar para representar formas de la capa de dibujo el conjunto Shapes , !ue representa todas las formas de un documento el conjunto ShapeRange , !ue representa un subconjunto especifico de las formas de un documento y el objeto Shape, !ue representa una forma individual de un documento. +ara trabajar con varias formas al mismo tiempo se debe utili&ar el conjunto ShapeRange o Shapes .
Ilustración 1–,. Objeto Sha"es y relacionados.
Uso del objeto Shapes
Los objetos Shapes pueden tener usos muy variados dentro de una aplicación Excel, por ejemplo se pueden asignar macros a las formas de una capa de dibujo, de manera !ue al #acer clic sobre una de ellas se ejecute determinada acción, sin embargo en el presente documento el uso de formas esta motivado principalmente para representaciones geométricas de la información ingresada por el usuario o para la presentación de los resultados de un an"lisis, por ejemplo si se est" desarrollando un a aplicación para el an"lisis de edificios, resulta conveniente presentar la geometr(a del edificio de forma gr"fica, para !ue as( el usuario pueda descubrir posibles errores en los datos ingresados, de igual manera, si se !uieren observar las deformaciones de la estructura, resulta adecuada la representación gr"fica de dic#as deformaciones y otras variables de interés para el ingeniero. Aeniendo en cuenta lo anterior, las formas m"s usadas en este documento ser"n l(neas, puntos, c(rculos, splines y cuadril"teros, en cuanto a las caracter(sticas de formato, se buscar" poder controlar los colores y rellenos, estas y otras tareas se pueden llevar a cabo usando los métodos y propiedades del objeto Shape o el objeto de conjunto Shapes. En los siguientes p"rrafos se presenta una introducción al manejo del objeto Shapes , se
OBJETOS DE MICROSOFT EXCEL
10
recomienda !ue el lector experimenta con estas ordenes, de tal forma !ue logre percibir las posibilidades del objeto Shape. +ara agregar una nueva forma a un documento, se usa el método A$$Shape(ipo&ara6etros)& donde tipo indica la clase de forma !ue se desea agregar, un rect"ngulo, #ex"gono, estrella, etc. y los par"metros dependen del tipo de forma !ue se adicione al documento, por ejemplo para definir un rect"ngulo se re!uieren dos puntos. +ara indicar el tipo de forma !ue se desea agregar se pueden usar las constantes predefinidas en Excel, las cuales se pueden consultar en la ayuda en l(nea -buscar propiedad AtoShape'pe . El siguiente ejemplo crea un c(rculo, le asigna un color de relleno y cambia el tipo de l(nea, se debe notar !ue se usa el método Select para seleccionar la forma adicionada. Hoja1.Shapes.A$$Shape(6soShape,al& 39.G& 183.2&
[email protected]& @.G).Select Selection.ShapeRange.-ill.-ore%olor.Sche6e%olor " 81 Selection.ShapeRange.-ill.Visible " 6sore Selection.ShapeRange.-ill.Soli$ Selection.ShapeRange.ine.-ore%olor.Sche6e%olor " 1 Selection.ShapeRange.ine.Visible " 6sore Selection.ShapeRange.ine.0ashSt'le " 6soine0ash
' cada forma se le asigna un nombre predeterminado al agregarla al conjunto Shapes . +ara asignar un nombre m"s significativo se utili&a la propiedad ;a6e. El siguiente ejemplo agrega un rect"ngulo a la Hoja1 , le asigna el nombre @/uadrado rojo@ y a continuación establece el color de primer plano y el estilo de l(nea de la forma. With Hoja1.Shapes.A$$Shape(6soShapeRectangle& 188& 188& G2& G2) .;a6e " *%a$ra$o rojo* .-ill.-ore%olor.RB " RB(2& 9& 9) .ine.0ashSt'le " 6soine0ash0ot +n$ With
+ara agrupar un rango de formas y devolver un $nico objeto Shape !ue representa el nuevo grupo formado, puede utili&ar los métodos rop o Regrop . *espués de formar el grupo, puede trabajar con él de la misma manera !ue con cual!uier otra forma. Dibujo de líneas
El método A$$ine permite agregar una l(nea nueva en el plano de dibujo del documento activo, en el siguiente ejemplo se ilustra el uso del método para agregar una l(nea, darle formato y rotarla. Hoja1.Shapes.A$$ine(3.G& 11.2& 21.2& 283.G).Select Selection.ShapeRange.-lip 6so-lipVertical Selection.ShapeRange.ine.-ore%olor.Sche6e%olor " 1 Selection.ShapeRange.ine.Visible " 6sore Selection.ShapeRange.ine.0ashSt'le " 6soineS<are0ot Selection.ShapeRange.Cncre6entRotation 29.3
OBJETOS DE MICROSOFT EXCEL
1.+
11
,y-da para la escrit-ra de códi#o
*ada la gran cantidad de objetos disponibles en Excel, puede resultar complicado o pr"cticamente imposible recordar la aplicación o incluso el nombre de las diferentes propiedades y métodos de un objeto en particular, sin embargo, la siguiente metodolog(a puede ayudar a facilitar el proceso. 0uponga !ue desea agregar o controlar la apariencia de un objeto determinado a través de código en VBA, sin embargo desconoce el nombre del objeto y m"s a$n sus métodos y propiedades, pero conoce la forma de modificar o crear el objeto usando comandos propios de Excel. +or ejemplo imagine !ue desea reali&ar un gr"fico de dispersión usando la información contenida en una #oja de calculo, adem"s desea controlar la apariencia del gr"fico l(neas de división, fondo, color de las series, agregar l(neas de tendencia etc. Esta es una tarea sencilla usando los comandos de la interfa& de Excel, por otro lado para reali&arlo desde el código se re!uiere tener dominio de los diferentes tipos de objetos de Microsoft Excel. +ara evitar el trabajo de consultar cada uno de los objetos, propiedades y métodos disponibles para reali&ar la tarea deseada, se puede #acer !ue Excel genere el código necesario, o por lo menos un código de ejemplo o base, !ue luego se puede modificar para !ue realice las tareas deseadas. /ontinuando con la idea del gr"fico de dispersión, suponga !ue desea !ue VB' grafi!ue los datos indicados en la 7lustración 5 8<.
Ilustración 1–. atos usados "ara generar un gr/0co de dis"ersión .
*ado !ue desconoce como usar el objeto %hart, el cual permite reali&ar la tarea deseada, puede usar el siguiente camino alternativo. 'bra el men$ Herra6ientas Iacro rabar ;e,a 6acro...& inmediatamente debe aparecer el cuadro de macros indicado en la 7lustración 5 8, debe dar un nombre al macro o aceptar el sugerido por defecto en Excel, si desea asignar una combinación de teclas al macro lo puede #acer en el cuadro de texto Método abreviado, también puede indicar en donde guardar el macro y
OBJETOS DE MICROSOFT EXCEL
12
agregar una descripción de éste. /uando #alla reali&ado 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 reali&ar una pausa en el proceso de grabación. 'l dar clic en aceptar se da inicio a la grabación del macro, es decir a los diferentes pasos !ue usted reali&ar" en Excel para crear y dar formato a un gr"fico de dispersión usando los datos contenidos en una #oja una ve& #alla terminado de graficar, dar formato y agregar las l(neas de tendencia o comentarios !ue considere pertinentes #aga clic en el botón detener grabación C D. Excel genera todo el código re!uerido para efectuar las tareas reali&adas por usted y lo guarda en un modulo de código !ue se puede consultar usando el editor de Visual Basic.
a)
b) Ilustración 1–3. a) +uadro de dialogo 4rabar 5acro. b) barra de herra!ientas grabar
+ara visuali&ar el código generado, se debe ingresar al editor de Visual Basic -ver numeral Error :eference source not found, ir a la sección I=$los de la ventana proyecto y #acer doble clic sobre el Modulo5 (en este eje6plo se spone <e este es el Jnico 6acro graba$o)& a continuación debe aparecer la ventana del editor con el código generado por Excel, ver 7lustración 5 8 y Aabla 5 F6.
OBJETOS DE MICROSOFT EXCEL
13
Ilustración 1–6. 5acro grabado "or 7cel.
'#ora puede modificar el código generado por Microsoft Excel de tal forma !ue realice las tareas deseadas, para tal fin no se re!uiere gran conocimiento de todos los métodos y propiedades del objeto /#art. 0uponga !ue se desea indicar a VBA el rango de los datos a graficar para !ue el autom"ticamente efect$e las tareas de formato por usted, para tal fin se asume !ue en la las celdas *5 y E5 se indica el n$mero de fila y columna de inicio del rango, mientras en las celdas *6, E6 se indican la fila y columna fin del rango. 0olo se re!uiere rempla&ar las primera cuatro l(neas de código para obtener el resultado deseado. Range(*A14B13*).Select %harts.A$$ Acti,e%hart.%hart'pe " lDEScatterS6ooth Acti,e%hart.SetSorce0ata Sorce4"Sheets(*Hoja1*).Range(*A14B13*)& lotB'4" K l%ol6ns Acti,e%hart.ocation Where4"locationAs;eFSheet& ;a6e4"*rL7ico*
Se cambia por: -i"cells(1&8).,ale4 %i"cells(1&).,ale -7"cells(2&8).,ale4 %7"cells(2&).,ale ;o6bre"cells(3&8).,ale Range(cells(-i&%i)&cells(-7&%7)).Select %harts.A$$ Acti,e%hart.%hart'pe " lDEScatterS6ooth Acti,e%hart.SetSorce0ata Sorce4"Sheets(*Hoja1*).Range(cells(7i&ci)&cells(77&c7))& lotB'4" K l%ol6ns Acti,e%hart.ocation Where4"locationAs;eFSheet& ;a6e4";o6bre
0e debe notar !ue se supone !ue la #oja donde se encuentran los datos es la #oja activa, de lo contrario las propiedades cells() deber(an ser precedidas por el nombre de la #oja donde se encuentran los datos -Hoja1.cells -, adicionalmente se #an usado las
OBJETOS DE MICROSOFT EXCEL
14
variables Gi, /i, Gf, /f para referirse a las celdas inicial y final del rango a graficar, de igual manera se usa no6bre para indicar el nombre del nuevo gr"fico, resaltando !ue no se pueden usar nombres de #ojas de gr"ficos o c"lculo existentes dado !ue se producir" un error en tiempo de ejecución. *e manera similar se puede proceder con todos los objetos considerados #asta el momento, por ejemplo si desea conocer como dar formato a través de código a una #oja de c"lculo, grabe un macro con todas las opciones de formato !ue desee, luego examine y use el código generado autom"ticamente. Esta es una metodolog(a r"pida y efectiva incluso si se conocen los comando !ue se deben ejecutar para reali&ar una tarea especifica, dado !ue puede evitar la escritura de gran parte del código y sólo basta con unas cuantas modificaciones para tener una aplicación funcionando como se desea. 0e debe notar !ue la facilidad !ue Excel brinda para la generación y uso de código, de alguna manera libera parte de la tarea de estudiar detalladamente cada uno de los objetos y métodos de esta poderosa #oja de c"lculo. Esto permite !ue el usuario se centre en las tareas de codificación t(picas del lenguaje de programación VBA, y por otro lado sólo se re!uiere tener presentes algunas ordenes b"sicas !ue permitan interactuar con los diferentes objetos de la aplicación. Ginalmente se recomienda de manera muy especial, acompaHar la lectura del código generado por Exel con la consulta de la ayuda en l(nea, de esta forma se puede lograr una mejor comprensión de las diferentes instrucciones. Ginalmente se debe notar !ue el código !ue genera la grabadora de macros no es muy eficiente o robusto, por lo tanto siempre resulta conveniente su edición para as( economi&ar l(neas de código y mejorar su legibilidad.
Sb ra7ico() M M ra7ico Iacro M Iacro graba$a el 91N98N91 por %arlos Artro %orona$o R. M M
Range(*A14B13*).Select %harts.A$$ Acti,e%hart.%hart'pe " lDEScatterS6ooth Acti,e%hart.SetSorce0ata Sorce4"Sheets(*Hoja1*).Range(*A14B13*)& lotB'4" K Dl%ol6ns Acti,e%hart.ocation Where4"locationAs;eFSheet& ;a6e4"*rL7ico* With Acti,e%hart .Hasitle " re .%hartitle.%haracters.et " *+je6plo $el #so $e Iacros* .Aes(l%ategor'& lri6ar').Hasitle " re .Aes(l%ategor'& lri6ar').Aisitle.%haracters.et " *Abscisas (6)*
OBJETOS DE MICROSOFT EXCEL
15
.Aes(lVale& lri6ar').Hasitle " re .Aes(lVale& lri6ar').Aisitle.%haracters.et " *r$ena$as (6)* +n$ With With Acti,e%hart.Aes(l%ategor') .HasIajorri$lines " re .HasIinorri$lines " -alse +n$ With With Acti,e%hart.Aes(lVale) .HasIajorri$lines " re .HasIinorri$lines " -alse +n$ With Acti,e%hart.Hasegen$ " re Acti,e%hart.egen$.Select Selection.osition " lBotto6 Acti,e%hart.lotArea.Select With Selection.Bor$er .%olorCn$e " 1 .Weight " lhin .ineSt'le " l%ontinos +n$ With With Selection.Cnterior .%olorCn$e " 29 .attern%olorCn$e " 1 .attern " lSoli$ +n$ With Acti,e%hart.%hartArea.Select With Selection.Bor$er .Weight " lHairline .ineSt'le " l;one +n$ With Selection.Sha$oF " -alse With Selection.Cnterior .%olorCn$e " 1@ .attern%olorCn$e " 1 .attern " lSoli$ +n$ With Acti,e%hart.Series%ollection(1).Select Acti,e%hart.Series%ollection(1).ren$lines.A$$('pe4"lol'no6ial& r$er4" K & -orFar$4"9& BackFar$4"9& 0ispla'+<ation4"-alse& 0ispla'RS<are$4" K -alse).Select Acti,e%hart.0eselect +n$ Sb
Tabla 1-2. +ódigo 8uente del !acro generado auto!/tica!ente "or 7cel.
1.
Examinador de objetos
La metodolog(a propuesta en la sección anterior, es una importante #erramienta para explorar los diferentes objetos disponibles en Excel y en particular para aprender sobre su uso, si embargo en ciertas situaciones se necesita un conocimiento m"s detallado de un objeto particular, de sus métodos y propiedades. Visual Basic tiene otra para explorar la biblioteca de objetos de Microsoft Excel, de #ec#o tal ve& esta sea la #erramienta m"s
OBJETOS DE MICROSOFT EXCEL
16
potente de todas, se trata del +a6ina$or $e objetos , el cual permite examinar todos los objetos disponibles en un proyecto, ver sus propiedades, métodos, eventos y adem"s ver los procedimientos y constantes !ue est"n disponibles en las bibliotecas de objetos del proyecto. *e esta forma, puede utili&ar el Examinador de objetos para encontrar y utili&ar objetos !ue #a creado y también objetos de otras aplicaciones. +ara utili&ar el Microsoft
Examinador de objetos siga los siguientes pasos, recomendados por
5. 'ctive el Editor de Visual Basic. 6. En el men$ Ver, elija Examinador de objetos -G6 o utilice el cuadro de #erramientas abreviado.
9. 0eleccione el nombre del proyecto o biblioteca !ue desea ver en la lista +royectoIBiblioteca. >. %tilice la lista /lases para seleccionar la clase utilice la lista Miembros para seleccionar los miembros espec(ficos de la clase o proyecto. <. Vea información acerca de la clase o miembro !ue seleccionó en la sección *etails en la parte inferior de la ventana. . %tilice el botón 'yuda para mostrar el tema de 'yuda para la clase o el miembro !ue seleccionó. +ara obtener mayor información acerca del Examinador de objetos, bus!ue Examinador de objetos en la 'yuda.
1./
&rabajo con otras aplicaciones
Visual Basic para aplicaciones le permite crear nuevos objetos y recuperar otros ya existentes en muc#as aplicaciones Microsoft, adem"s otras aplicaciones -+ertenecientes a
OBJETOS DE MICROSOFT EXCEL
17
otras compaH(as de soft2are también pueden proporcionar objetos !ue se pueden crear usando Visual Basic. 0i desea m"s información sobre objetos, métodos y propiedades !ue proporciona una determinada aplicación debe consultar su documentación. +ara crear un objeto nuevo u obtener uno de otra aplicación, debe usar las funciones %reatebject o etbject respectivamente, como se indica a continuación M Arranca Iicroso7t +cel ' crear n ne,o objeto Worksheet. Set +celWorksheet " %reatebject(*+cel.Sheet*) M Arranca Iicroso7t +cel ' abre n objeto Worksheet 'a eistente. Set +celWorksheet " etbject(*Hoja1.DS*) M Arrancar Iicroso7t Wor$. Set Wor$Basic " %reatebject(*Wor$.Basic*)
Ginalmente, tenga presente !ue la mayor parte de las aplicaciones disponen de un método +it o Oit !ue permite cerrar la aplicación incluso cuando no est" visible, esto puede resultar de utilidad en algunas situaciones.
1.10 %oncl-sión En esta sección se #an cubierto los aspectos y temas fundamentales del modelo de objetos usado en Microsoft Excel. 0e dan algunas ideas sobre el uso de los diferentes objetos, resaltando los métodos y propiedades de mayor utilidad desde el punto de vista de desarrollo de aplicaciones de ingenier(a. 0e presenta una metodolog(a sencilla para lograr familiari&ar al lector con los diferentes objetos de Excel, para tal fin se re!uiere usar la #erramienta grabar Macro. 0in embargo se #ace énfasis en la ineficiencia o redundancia de parte del código generado de esta manera. 0e presenta el uso del Examinado de )bjetos, como #erramienta clave y fundamental para la comprensión detallada del modelo y uso de los diferentes objetos de Excel.