Mm011

43
7/23/2019 Mm011 http://slidepdf.com/reader/full/mm011 1/43 Manual CURSO EXCEL 2013  y PROGRAMACIÓN (VBA) y MACROS Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela 1 Sé diferente, intégrate… Fecha: 23 / 07 / 2013 Autor: ORLANDO GUTIERREZ Mm011  Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

Transcript of Mm011

Page 1: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 1/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  1 

Sé diferente, intégrate… 

Fecha: 23 / 07 / 2013

Autor: ORLANDO GUTIERREZ

Mm011 

Manual CURSO EXCEL 2013 y

PROGRAMACIÓN (VBA) y MACROS

Page 2: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 2/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  2 

INDICE

Pag. 3 Lección 1  Introducción a VBA

Pag. 5 Lección 2  Módulos en VBA

Pag. 6 Lección 3  Clases en VBA

Pag. 10 Lección 4  Macros

Pag. 13 Lección 5  Modelo de objetos de Excel: Colecciones, Objetos, Propiedades, Métodos, Enumeraciones

Pag. 18 Lección 6  Objeto Excel

Pag. 19 Lección 7  Libros

Pag. 20 Lección 8  Hojas

Pag. 20 Lección 9  Celdas y Rangos

Pag. 22 Lección 10 Manejo de gráficos

Pag. 24 Lección 11 Colecciones para el manejo de gráficos

Pag. 27 Lección 12 Objetos para el manejo de gráficos

Pag. 28 Lección 13  Propiedades para el manejo de Gráficos

Pag. 32 Lección 14 Métodos para el Manejo de Gráficos

Pag. 33 Lección 15 Controles, Cuadros de Diálogo y Formularios

Pag. 34 Lección 16 Crear Formularios

Pag. 35 Lección 17 Agregar Controles a Formularios

Pag. 36 Lección 18 Programar eventos de controles en Formularios

Pag. 39 Lección 19  Novedades en Aplicaciones para Office en Excel 2013 :Nuevas funciones de hoja decálculo, Análisis Rápido, Disponibilidad de nuevos orígenes de datos, Uso de los modelo OM, Creación de gráficosdinámicos y tablas dinámicas de forma independiente, Interfaz de un único documento, Las animaciones deencendido y apagado mediante programación, Escala de tiempo

Page 3: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 3/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  3 

LECCION 1 Introducción a VBA

A la hora de programar en Visual Basic para Aplicaciones VBA , Visual Basic for Applications en inglés, se disponede un ambiente de programación bastante completo: en Excel, Word y Access se dispone del Editor de VisualBasic.

VBA es un subconjunto del lenguaje de Programación Visual Basic y por lo tanto mantiene el conjunto deinstrucciones básicas: secuenciales, condicionales y repetitivas.

En la siguiente figura se muestra un resumen de estas instrucciones

El valor agregado de VBA es que ofrece una librería de objetos para cada una de las herramientas de Office: Excel,Word y Access. En las aplicaciones modernas desarrolladas con Microsoft Visual Studio .Net; esta funcionalidad laofrecen a través de las características de Interop.

Editor de Visual Basic

El Editor de Visual Basic, VBE por sus siglas en inglés, es un programa independiente a Excel pero fuertementerelacionado a él porque es el programa que permite escribir código VBA que estará asociado a las macros.Existen al menos dos alternativas para abrir este editor, la primera de ellas es a través del botón Visual Basic dela ficha Programador.

Page 4: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 4/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  4 

El segundo método para abrir este programa es, el más sencillo y rápido y que es a través del atajo de teclado:ALT + F11. El Editor de Visual Basic contiene varias ventanas y barras de herramientas.

En la parte izquierda se muestra el Explorador de proyectos el cual muestra el proyecto VBA creado para el libroactual y además muestra las hojas pertenecientes a ese libro de Excel. Si por alguna razón no se puedes visualizareste módulo se puede habilitar en la opción de menú Ver y seleccionando la opción Explorador de proyectos.

Page 5: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 5/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  5 

El Explorador de proyectos también ayuda a crear o abrir módulos de código que se serán de gran utilidad parareutilizar todas las funciones de código VBA.

Dentro del Editor de Visual Basic se observa una ventana llamada Inmediato que está en la parte inferior. Estaventana es de mucha ayuda al momento de escribir código VBA porque permite introducir instrucciones y observarel resultado inmediato. Además, desde el código VBA se pueden imprimir mensajes hacia laventana Inmediato con el comando Debug.Print de manera de depurar el código. Si no se puede observar estaventana se puede mostrarla también desde el menú Ver.El área más grande en blanco es donde se escribe el código VBA.

LECCION 2 Módulos en VBA

Un módulo se utiliza para recopilar bajo un nombre un conjunto de declaraciones, instrucciones, procedimientos yfunciones.

Al crearse un módulo desde VBA se pueden agegar variables (declaraciones) y código Sub y Functions.

Ejemplo se crea un módulo saludo.vb

Y se escribe el siguiente código

Sub saludo() ‘Subrutina, saludo del modulo

Dim saludo As String ‘ declaración de variable local

saludo = MsgBox(“Hola Mundo”, vbCritical, “Mi saludo”) ‘instrucción

End Sub

Page 6: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 6/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  6 

Se Inicia VBA y Menú>Insertar>Módulo.A continuación se resumen la sintaxis para las instrucciones en VBA.

LECCION 3 Clases en VBA

Aparte de los módulos para código que tiene Excel VBA, también existen Módulos de clase o Class Modules, enestos módulos se puede crear clases personalizadas con las cuales se puede representar en cierta forma objetos,aunque Excel VBA no es un lenguaje orientado a objetos, se puede aprovechar algunas ventajas que da el uso declases.

Un módulo de clase en VBA puede definirse como una plantilla donde crear objetos.

Definirá todas las características que requiere el objeto final. Por ejemplo, se puede tener una clase llamadaclsEmpleados en donde se almacenan todas las características con respecto a un empleado. Como propiedades sepueden definir: nombre, apellidos, domicilio, edad, casado, sueldo, fecha de ingreso, antigüedad, etc. Comométodos se podría tener: ActualizarDatos , GuardarCambios, ValidarDatos.

Un módulo de clase:

  Es parecido a los tipos de datos definidos por el usuario UDT.   Cada módulo define un tipo de objeto.   En ejecución se debe crear una instancia (o objeto) de la clase.   No tiene interfaz de usuario. 

Los módulos de clase no presentan una interfaz gráfica al desarrollador tal y como lo hacen los formularios. En losformularios se puedes colocar visualmente un botón, una lista, un texto, etc. Los módulos de clase solo contienencódigo definiendo las características del objeto.

  Se pueden crear múltiples instancias en ejecución. De acuerdo a la configuración de las propiedades de la clase se pueden crear varias instancias u objetos de unamisma clase. Esto es, la propiedad Instancing de un módulo de clase indica cómo se trataran los objetos creadosutilizando un módulo de clase determinado. Se tiene la opción de que sea una clase Privada lo cual significa que nose puede instanciar directamente por otro programa.

  Proporciona métodos y propiedades. 

Eventos de un módulo de clase: Initialize y Terminate

Los módulos de clase presentan dos eventos:  Initialize: ocurre cuando se crea una instancia de una clase. Se usa, generalmente para inicializar cualquier

dato usado por la instancia de una clase en el código.

Page 7: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 7/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  7 

  Terminate: ocurre cuando toda referencia a una instancia de una clase son removidas de memoria alestablecer todas las variables que la refieren a un objeto a Nothing o cuando la última referencia al el objeto seencuentra fuera de alcance. Usado generalmente para limpiar la memoria de objetos creados dentro de estainstancia y generar un error si hay alguna anomalía o guardar alguna información del objeto, etc.

Diferencias con los módulos estándar

 

Deben ser creadas explícitamente (crear instancia) antes de usarlas.

No se puede utilizar el método o la propiedad de una clase si no se tiene una instancia de la misma o unareferencia al componente que la contiene si la clase está configurada como Instancing = PublicNoCreatable.  Se Pueden crear múltiples instancias de la clase.

Ejemplo:1.  Iniciar VBA y en Menú>Insertar>Módulo de clase.2.  Darle un nombre por ejemplo ObAplicacion3.  Insertar el siguiente código donde se crea un objeto Aplicacion:

Public WithEvents MiAplicacion as Application Si se pulsa ahora F2 y se despliega la lista de objetos, encontrará el objeto recién creado. A continuación se creandos métodos para el objeto recién creado. El primero se encargará de insertar una nueva hoja en el libro:

Private Sub MiAplicacion_NuevaHoja(ByVal wb As Workbook, ByVal sh As Object) Dim nombrehoja As String nombrehoja = InputBox(“Introduzca un nombre para la hoja”) 

 ActiveSheet.Name = nombrehoja  ActiveSheet.Move After:=Sheets(Sheets.Count) 

End Sub

Con este código se crea un nuevo libro:Private Sub MiAplicacion_NuevoLibro(ByVal wb As Workbook) 

Dim numhojas, numactual, diferencia As Integer  ‘por cada nuevo libro se solicita al usuario el número de hojas ‘caso necesario se agregan o eliminan hojas Do 

numhojas = Application.InputBox(“¿Cuántas hojas va a necesitar?”, Type:=1) Loop While numhojas = False numactual = Sheets.Count  

diferencia = numactual – numhojas ‘se eliminan las hojas de sobra y se desactivan las alertas Do While diferencia > 0  Application.DisplayAlerts = False Sheets.Item(diferencia).Select  

 ActiveWindow.SelectedSheets.Delete diferencia = diferencia – 1 Loop 

 Application.EnableEvents = True  Application.DisplayAlerts = True 

End Sub Por último se va a conectar el módulo de clase con el objeto Aplicación:Option Explicit  Dim app As New ObjAplicacion 

Sub Inicializa_MiAplicacion() 

Set app.MiAplicacion = Application End Sub 

Otro ejemplo conteniendo propiedades

Para ilustrar sobre el uso de clases, se creará la clase Rectángulo. En aspectos generales una clase tiene unconstructor, variables privadas, métodos de lectura/escritura de las variables privadas, propiedades y métodos ensí. En un módulo de clase no existen constructores, más si existe el evento Initialize de la clase, una variableprivada se crea con la sentencia private al definir una variable, las propiedades de lectura/escritura se realizan conlas palabras clave Get y Let, las propiedades con Property y los métodos como otros Sub o Function.

Page 8: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 8/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  8 

Aquí se muestra el código para la clase Rectangulo

'variables privadas

Private pnombre As String

Private plargo As DoublePrivate pancho As Double

'Constructora de la Clase

Private Sub Class_Initialize()

plargo = 6

pancho = 4

End Sub

'Acceso variables publicas

Public Property Let nombre(p As String)

pnombre = pEnd Property

Public Property Get nombre() As String

nombre = pnombre

End Property

Public Property Let largo(x As Double)

plargo = x

End Property

Public Property Get largo() As Double

largo = plargo

End Property

Public Property Let ancho(x As Double)

pancho = x

End Property

Public Property Get ancho() As Double

ancho = pancho

End Property

'Propiedades

Property Get Area() As Double

Area = plargo * pancho

End Property

Property Get Perimetro() As Double

Perimetro = 2 * (plargo + pancho)

End Property

Page 9: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 9/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  9 

'Metodos

Public Sub Resize(f As Double)

plargo = plargo * (1 + f)

pancho = pancho * (1 + f)

End Sub 

En el código, en primer lugar se han declarado las variables privadas (pnombre, pancho, plargo), luego se hadeclarado el evento inicialización de una clase (Class_Initialize), que en caso no se declare los parámetros parala clase Rectangulo (largo, ancho) automáticamente toma los valores que indica Initialize.

Luego se han declarado las propiedades de acceso lectura/escritura (Get/Let) a cada una de esas variables. Luegose han declarado las propiedades Area y Perimetro que se calculan en función de los parámetros plargo ypancho. Finalmente se creó el método Resize, que reajusta el tamaño de plargo y pancho en un porcentaje f.

Para el siguiente fragmento de código, se requiere una hoja de Excel conteniendo la siguiente información:

Luego en un módulo estándar se agrega el siguiente sub.

Sub readRectangulos()

Dim rg As Range

Dim oRec1 As Rectangulo

Dim oRec2 As Rectangulo

Set rg = Range("B3")

Set oRec1 = New Rectangulo

'Se define los datos de oRec1

oRec1.largo = rg.Offset(0, 1).Value

oRec1.ancho = rg.Offset(0, 2).Value

rg.Offset(0, 3).Value = oRec1.Area

rg.Offset(0, 4).Value = oRec1.Perimetro

'No se define los datos de oRec2

Set rg = Range("B4")

Set oRec2 = New Rectangulo

rg.Offset(0, 1).Value = oRec2.largo

rg.Offset(0, 2).Value = oRec2.ancho

Page 10: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 10/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  10 

rg.Offset(0, 3).Value = oRec2.Area

rg.Offset(0, 4).Value = oRec2.Perimetro

'Aplicando Resize a oRec1

oRec1.Resize (0.25)

Set rg = Range("B5")rg.Offset(0, 1).Value = oRec1.largo

rg.Offset(0, 2).Value = oRec1.ancho

rg.Offset(0, 3).Value = oRec1.Area

rg.Offset(0, 4).Value = oRec1.Perimetro

'Libera memoria

Set oRec1 = Nothing

Set oRec2 = Nothing

End Sub 

Se declaran dos objetos Rectangulo oRec1 y oRec2, el primero toma datos de C3 y D3 de la hoja activa, mientrasque oRec2 no toma ningún valor, mantiene los valores que se le dio en Class_Initialize para plargo y pancho. Seescriben estos valores en la hoja, luego se modifica oRec1 con el método Resize y se inscriben los valores en lahoja.

LECCION 4 Macros

Las macros de Excel permiten automatizar tareas realizadas cotidianamente de manera de ser más eficientes en eltrabajo. Una macro no es más que una serie de comandos o instrucciones que permanecen almacenados dentro deExcel y que se pueden ejecutar cuando sea necesario y cuantas veces se requiera.

Las macros se escriben en un lenguaje de programación que es conocido como VBA. Este lenguaje permite accedera prácticamente todas las funcionalidades de Excel y con ello también ampliar la funcionalidad del programa.

Excel provee de una herramienta especial que permite crear una macro sin necesidad de conocer los detalles dellenguaje de programación, pero no es el caso ideal para los desarrolladores profesionales.

Las macros se crean con el Editor de Visual Basic el cual permitirá introducir el código con las instrucciones queserán ejecutadas por la macro.

Existe otro método que es utilizar la Grabadora de macros la cual irá grabando todas las acciones realizadas enExcel hasta que se detenga la grabación. Una vez grabada la macro podremos “reproducir” de nuevo las accionescon tan solo un clic. La util idad de la grabadora es visualizar el código VBA generado de manera automática el cualpuede ser modificado en las aplicaciones desarrolladas.

El código de la grabadora de macros

Una manera muy interesante de descubrir y aprender más sobre código VBA es analizar el código generado porla Grabadora de macros. En el siguiente ejemplo se grabará una macro muy sencilla que solamente cambie el

color de la fuente de la celda actual.Para comenzar se debe ir a la pestaña Programador y pulsar el comando Grabar macro lo cual mostrará elcuadro de diálogo donde se asignará el nombre a la macro que se está por crear.

Page 11: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 11/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  11 

Pulsar el botón Aceptar y se comenzarán a grabar todas las acciones. Para la macro a grabar se ejecutará losiguiente: ir a la pestaña Inicio y pulsar el comando Color de fuente y seleccionar el color rojo para la celda activa.

Una vez hecho esto se detiene la grabación de la macro y una alternativa para hacerlo es pulsar el icono que semuestra en la barra de estado.

Page 12: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 12/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  12 

Una vez generada la macro, se pulsa el botón Macros que se encuentra en el grupo Código de la fichaProgramador. Se mostrará el cuadro de diálogo Macro que enlista todas las macros creadas.

Seleccionar la macro recién creada y pulsar el botón Modificar. Esto abrirá el Editor de Visual Basic y mostrará elcódigo generado para la macro.

Observando este código se aprenden varias cosas. Para empezar se observa que el objeto Selection tiene unapropiedad llamada Font que es la que hace referencia a la fuente de la celda o rango seleccionado. A su vez, lapropiedad Font tiene otra propiedad llamada Color que es precisamente la que define el color rojo de nuestra celda.

Aunque este ha sido un ejemplo muy sencillo, cuando se tenga duda sobre qué objetos utilizar al programar enVBA se puede considerar utilizar la Grabadora de macros para obtener una idea del camino a seguir.

Page 13: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 13/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  13 

LECCION 5 Modelo de objetos de Excel: Colecciones, Objetos, Propiedades, Métodos, Enumeraciones

Elementos

El modelo de objetos de Excel se compone de objetos y colecciones de objetos. Los objetos, como cualquier objetode Visual Basic se componen de Propiedades, Métodos. Para algunos casos se definen enumeraciones agrupandoconjuntos de constantes.

Los objetos en Excel (VBA) son elementos dentro de la hoja de excel. Una celda es un objeto, una hoja es unobjeto, un libro es un objeto y de esta manera existen muchos más objetos en Excel. A esto lo conocemos como elmodelo de objetos de Excel.

Cada uno de los objetos de Excel tiene propiedades y métodos. Las propiedades son las características delobjeto y los métodos son las acciones que el objeto puede ejecutar.

Propiedades de un objeto

Si una persona fuera un objeto de Excel sus propiedades serían el color de sus ojos, el color de su cabello, su

estatura, su peso. De la misma manera, un objeto de Excel tiene propiedades por ejemplos, una celda (Range)tiene las propiedades valor (Value) y dirección ( Address) entre muchas otras. Estas propiedades describen mejoral objeto.

Métodos de un objeto

Siguiendo con el ejemplo de una persona, si fuera un objeto de Excel sus métodos serían correr, caminar, hablar,dormir. Los métodos son las actividades o acciones que el objeto puede ejecutar. Los objetos de Excel secomportan de la misma manera que el ejemplo de una persona. Una celda (Range) tiene los métodos activar( Activate), calcular (Calculate), borrar (Clear ) entre muchos más.

Utilizando las propiedades y los métodos

Para acceder a las propiedades y métodos de un objeto se hace a través de una nomenclatura especial. Justodespués del nombre del objeto colocamos un punto seguido del nombre de la propiedad o del método. En esteejemplo se hace uso de la propiedad Value para la celda A1:Range("A1").Value = "Hola"

De esta manera se asigna una cadena de texto al valor de la celda A1. Ahora bien, si se quiere borrar el valor quese acaba de colocar en la celda se puede utilizar el método Clear  de la siguiente manera:

Range("A1").Clear

Page 14: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 14/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  14 

Ver todas las propiedades y métodos

Los objetos tienen muchas propiedades y métodos y a veces es difícil pensar que se conocerán todos por completo.Sin embargo, el Editor de Visual Basic es de gran ayuda porque justamente al momento de escribir el códigoproporciona la lista completa de propiedades y métodos para un objeto.

Esto sucede al momento de introducir el punto después del nombre del objeto. Se puede distinguir entre laspropiedades y métodos porque tienen iconos diferentes. En la imagen de arriba los métodos son los que tienen el

icono de color verde.

Jerarquía Principal.

Nivel 1. Un objeto Application (representando al Excel) contiene una colección de libros (.xls), objeto Workbooks

Nivel 2. Un objeto Workbook (libro) contiene una colección de Pestañas, objeto Worksheet 

Nivel 3. Las celdas de una Pestaña se representan en el objeto Range, el cual tiene dos dimensiones; celda inicialy celda final

Objeto Application

Page 15: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 15/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  15 

Objeto Workbook

Objeto Pestaña

Page 16: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 16/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  16 

Objeto Range

Navegando el Modelo de Objetos

Excel tiene un modelo de objetos el cual es una jerarquía de todos los objetos que se pueden utilizar desde ellenguaje VBA. En la parte superior de la jerarquía se encuentra el objeto Application y todos los demás objetosestarán por debajo de él.

A c c e d e r a o b j e t o s i n f e r i o r e s

Para tener acceso a los objetos que están por debajo del objeto Application se puede utilizar el punto. El puntoayuda a navegar por la jerarquía hacia un nivel inferior. Observar lo que se muestra en el Editor de Visual Basic alcolocar un punto después del objeto Application:

Page 17: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 17/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  17 

Por ejemplo, si se desea poner en negrillas el texto de la celda A1 se debe llegar al objeto Range el cual daráacceso a modificar la propiedad Bold de la siguiente manera:

Aunque esta línea de código puede tomar un poco de tiempo en escribirla, pero describe por completo la jerarquíade los objetos.

O b j e t o s p r e d e t e r m i n a d o s

Existe una funcionalidad intrínseca de VBA conocida como objetos predeterminados la cual permite omitir laescritura de algunos objetos y aun así tener un código funcional. Por ejemplo, en la instrucción mostradapreviamente se puede omitir el objeto Application y tener el código funcionando correctamente:

Inclusive se pueden omitir los objetos ActiveWorkbook y ActiveSheet sabiendo que el código se ejecutarásiempre sobre el libro activo y la hoja que esté activa al momento de la ejecución:

R e f er e n c i a s c om p l e t a s a o b j e t o s

Se puede utilizar las referencias completas a los objetos, es decir, especificar toda la ruta completa hasta llegar alobjeto deseado. Una razón para hacer esto es porque da una claridad absoluta sobre la ubicación exacta de cadaobjeto lo cual ayudará a evitar cualquier mala interpretación del código.

Si se decides no hacer uso de los objetos predeterminados sino que se desea utilizar las referencias completashacia cada objeto aún hay una manera de ahorrar algunas líneas de código. Suponga las siguientes instruccionesen VBA:

Se pueden ahorrar algunas palabras de este código haciendo uso del bloque With de la siguiente manera.

Page 18: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 18/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  18 

En ambos casos el resultado será el mismo y en el último se ahorran algunos caracteres dejando el código VBAclaro y legible.

LECCION 6 Objeto Excel

El objeto Application

Cuando se escribe código con VBA se trabajamos con múltiples objetos que pueden ejecutar instruccionesadecuadamente, pero el objeto Application está en el nivel más alto de la jerarquía del modelo de objetos deExcel.

El objeto Application simboliza a Excel mismo y da acceso a opciones y configuraciones a nivel de la aplicación.Muchas de las opciones a modificar con el objeto Application son las mismas que se encuentran en la pestañaArchivo dentro del cuadro de diálogo Opciones de Excel.

Ya que el objeto Application es el objeto principal dentro de VBA todos los demás objetos derivan de él. Es porello que se encontrarán frecuentemente instrucciones que comienzan especificando el objeto Application:

Application.ActiveSheet.Name = "Reporte de Ventas"

Sin embargo, VBA permite, en la mayoría de los casos, omitir la escritura del objeto Application ya que suponeque todos los demás objetos provienen de él. De esta manera la siguiente instrucción también es válida.

ActiveSheet.Name = "Reporte de Ventas"

Co le c c i o n e s d e l o b j e t o A p p l i c a t i o n

El objeto Application tiene algunas colecciones que son de mucha utilidad como Sheets, Columns y Rows. Lacolección Sheets permite acceder a todas las hojas de un libro:

Application.Sheets.Count

Es muy importante mencionar que la colección Sheets se referirá al libro de Excel que se encuentre activo en elmomento de ejecutar esta instrucción. Las colecciones Columns y Rows permitirán acceder a las columnas y filasde la hoja activa.

Application.Columns(5).Select

Application.Rows(5).Select

P r o p i e d a d e s d e l o b j e t o A p p l i ca t i o n

El objeto Application tiene muchas propiedades como para mencionarles todas en este manual, pero algunas de lasmás importantes son las siguientes:

  ActiveWorkbook. Devuelve un objeto Workbook que representa el libro de Excel activo.  ActiveSheet. Regresa un objeto Worksheet que representa a la hoja que esté actualmente seleccionada

(activa). 

ActiveCell. Devuelve un objeto Range que representa la celda activa dentro de la hoja activa en el libro deExcel activo.

  ThisWorkbook. Esta propiedad devolverá un objeto Workbook que representará el libro que contiene lamacro que está siendo ejecutada.

Métod o s de l o b j e t o App l i c a t i o n

Uno de los métodos más utilizados del objeto Application es el método InputBox  mostrando un cuadro de diálogoque solicita al usuario el ingreso de algún valor. Ejemplo:

Page 19: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 19/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  19 

Impresiones = Application.InputBox(Prompt:="Número de impresiones:", _

Title:="Imprimir", Default:=1, Type:=1)

Esta instrucción hará que Excel muestre un cuadro de diálogo pidiendo al usuario ingresar el número deimpresiones que desea realizar. El número ingresado por el usuario se guardará en la variable Impresiones.

LECCION 7 Libros

Un objeto en VBA puede contener otro objeto y ese objeto a su vez puede contener otro objeto y asísucesivamente. La raíz de todos los objetos en VBA se encuentra en el objeto Application el cual a su vez contienelas colecciones de objetos Workbooks.

El objeto Workbook representa un libro de Excel

Un libro de Excel puede tener más de una hoja lo cual significa que un objeto Workbook puede contener más de unobjeto Worksheet.

Como no hay límite en el número de hojas que puede tener un libro, se volvería complicado organizar esta relaciónentre los objetos Workbook y Worksheet y por esta razón se crearon las colecciones de objetos. De esta manera unobjeto Workbook tiene asociada una colección de objetos Worksheets la cual contiene los objetos Worksheetque representan las hojas de ese libro de Excel.

De la misma manera, el objeto Application no tiene asignados directamente todos los libros de Excel sino que tieneuna colección de objetos Workbooks la cual incluirá todos los objetos Workbook de los libros de Excel que seabran en el código VBA.

Abrir un libro de Excel

Para abrir un libro de Excel en VBA se puede utilizar el método Open del objeto Workbooks de la siguiente manera:

Application.Workbooks.Open Filename:="C:Libro1.xlsx"

Esta instrucción abrirá el archivo ubicado en “C:Libro1.xlsx” y lo agregará a la colección de objetos Workbooks.De esta manera se pueden abrir tantos archivos como sean necesarios y para cada uno de ellos se creará un objetoWorkbook el cual será almacenado dentro de Workbooks.

Hacer referencia a un libro en VBA

Una vez abiertos los archivos requeridos se puede hacer referencia a cada uno de ellos a través de la colección deobjetos Workbooks de la siguiente manera:

Application.Workbooks(1).Activate

El número dentro de los paréntesis indica el índice del objeto Workbook dentro de la colección de objetosWorkbooks. De manera predeterminada el índice 1 será para el libro de Excel que contiene el código VBA y apartir de ahí la numeración será de acuerdo al orden en se hayan abierto otros archivos.

Page 20: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 20/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  20 

Si se conoce el nombre del libro se puede utilizar en lugar del índice y tener una instrucción como la siguiente:

Application.Workbooks("Libro1.xlsx").Activate

La colección de objetos Workbooks  permitirá acceder a todos los libros abiertos dentro de la aplicación VBA.

LECCION 8 Hojas

Un objeto en VBA puede contener otro objeto y ese objeto a su vez puede contener otro objeto y asísucesivamente. La raíz de todos los objetos en VBA se encuentra en el objeto Application el cual a su vezcontiene las colecciones de objetos Worksheets.

El objeto Worksheet representa una hoja de un libro de Excel.

Acceder las hojas de un libro

Se puede acceder las hojas de cualquier libro a través de su colección de objetos Worksheets. Esta coleccióntambién puede ser accedida por el índice de cada una de las hojas del libro:

Application.Workbooks(1).Worksheets(1).Range("A1").Value = "Hola"

Esta instrucción accede a la hoja con el índice 1 y coloca el valor “Hola Mundo” en la celda A1. También se puedeacceder a una hoja a través de su nombre en caso de conocerlo:

Application.Workbooks(1).Worksheets("Hoja1").Range("A1").Value = "Hola"

Agregar una nueva hoja

A través de la colección de objetos Worksheets se pueden crear nuevas hojas en un libro. Observar la siguienteinstrucción:

Worksheets.Add

Observar que no se ha iniciado la instrucción anterior con el objeto Application, ni tampoco está precedida por elobjeto Workbooks. Esta es una sintaxis aceptable dentro de VBA e indica que se agregará una nueva hoja al libroque esté activo en ese momento. Este es un método abreviado que se puede utilizar si se está seguro de que ellibro activo es el libro dondse se agregará una nueva hoja. De lo contrario, se puede especificar tota la rutacompleta:

Application.Workbooks("Libro1.xlsx").Worksheets.Add

LECCION 9 Celdas y Rangos

Objeto Range

Representa una celda, una fila, una columna, una selección de celdas que contienen uno o más bloques contiguosde celdas o un rango 3D.

Usar Range(arg), donde arg asigna un nombre al rango, para obtener un objeto Range que represente una solacelda o un rango de celdas. En el ejemplo siguiente se coloca el valor de la celda A1 en la celda A5.

Worksheets("Sheet1").Range("A5").Value = _Worksheets("Sheet1").Range("A1").Value

Page 21: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 21/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  21 

En el ejemplo siguiente se rellena el rango A1:H8 con números aleatorios y se establece la fórmula de cada celdadel rango. La propiedad Range, si se emplea sin un calificador de objeto (un objeto colocado a la izquierda delpunto), devuelve un rango de la hoja activa. Si la hoja activa no es una hoja de cálculo, este método no se llevaráa cabo con éxito. Usar el método Activate para activar una hoja de cálculo antes de usar la propiedad Range sinun calificador de objeto explícito.

Worksheets("Sheet1").ActivateRange("A1:H8").Formula = "=Rand()" 'Range is on the active sheet

En el ejemplo siguiente se borra el contenido del rango denominado Criteria.

Nota: Si se usa un argumento de texto para la dirección del rango, se debe especificar ladirección en notación de estilo A1 (no se puede usar la notación de estilo R1C1).

Worksheets(1).Range("Criteria").ClearContents

Usar Cells(fila, columna), donde fila es el índice de la fila y columna es el índice de la columna, para obtener unasola celda. En el siguiente ejemplo se establece en 24 el valor de la celda A1.

Worksheets(1).Cells(1, 1).Value = 24

En el siguiente ejemplo se establece la fórmula de la celda A2.

ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

Aunque también se puede usar Range("A1") para devolver la celda A1, es posible que haya veces cuando lapropiedad Cells es más conveniente, ya que puede usar una variable de la fila o columna. En el ejemplo siguientese crea los encabezados de columna y fila de Sheet1. Tener en cuenta que después de activar la hoja de cálculo, lapropiedad de las celdas se puede usar sin una declaración de hoja explícitas (devuelve una celda de la hojaactiva).

Nota: Aunque podría usar funciones de cadena de Visual Basic para modificar las referencias deestilo A1, es más sencillo (y una mejor práctica de programación) usar la notación Cells(1, 1) .

Sub SetUpTable()Worksheets("Sheet1").ActivateFor TheYear = 1 To 5

Cells(1, TheYear + 1).Value = 1990 + TheYearNext TheYearFor TheQuarter = 1 To 4

Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarterNext TheQuarterEnd Sub

Usar expresión.Cells(fila, columna), donde expresión es una expresión que devuelve un objeto Range,y fila y columna son relativos a la esquina superior izquierda del rango, para obtener una parte del rango. En elsiguiente ejemplo se establece la fórmula para la celda C5.

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

Usar Range(celda1, celda2), donde celda1 y celda2 son objetos Range que especifican la primera y la últimacelda, para obtener un objeto Range. En el siguiente ejemplo se establece el estilo de línea de los bordes de lasceldas A1:J10.

Nota: Tener en cuenta que el período delante de cada aparición de la propiedad Cells.El período es necesario si el resultado de la instrucción con anterior es que se aplicaráa la propiedad Cells — en este caso, para indicar que son las celdas de la hoja uno(sin el período, la propiedad Cells devolvería las celdas de la hoja activa).

With Worksheets(1).Range(.Cells(1, 1), _

.Cells(10, 10)).Borders.LineStyle = xlThickEnd With

Page 22: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 22/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  22 

Usar Offset(fila, columna), donde fila y columna son la fila y columna, desplaza, para devolver un intervalo con undesplazamiento especificado al intervalo de otra. En el ejemplo siguiente se selecciona la celda situada tres filashacia abajo desde y una columna a la derecha de la celda en la esquina superior izquierda de la selección actual.No puede seleccionar una celda que no está en la hoja activa, por lo que debe activar la hoja de cálculo.

Worksheets("Sheet1").Activate'Can't select unless the sheet is active

Selection.Offset(3, 1).Range("A1").Select

Usar Union(rango1, rango2, ...) para devolver rangos de varias áreas, es decir, rangos compuestos por dos o másbloques contiguos de celdas. En el siguiente ejemplo se crea un objeto definido como la unión de los rangos A1:B2y C3:D4 y, a continuación, se selecciona el rango definido.

Dim r1 As Range, r2 As Range, myMultiAreaRange As RangeWorksheets("sheet1").ActivateSet r1 = Range("A1:B2")Set r2 = Range("C3:D4")Set myMultiAreaRange = Union(r1, r2)myMultiAreaRange.Select

Si se trabaja con selecciones que contienen más de un área, la propiedad Areas es útil. Divide una selección devarias áreas en objetos de rango individuales y, a continuación, devuelve los objetos como una colección. Sepuede usar la propiedad Count en la colección devuelta para comprobar una selección que contiene más de un

área, tal como se muestra en el siguiente ejemplo.Sub NoMultiAreaSelection()

NumberOfSelectedAreas = Selection.Areas.CountIf NumberOfSelectedAreas > 1 Then

MsgBox "You cannot carry out this command " & _"on multi-area selections"

End IfEnd Sub

LECCION 10 Manejo de gráficos

A continuación se muestra un ejemplo de cómo crear gráficos en Excel con VBA. En las siguientes lecciones seexplicarán los elementos por separado.

Crear gráficos personalizados puede ser una tarea práctica y sencilla si se conoce como utilizar el objeto Chart yChartObject, al igual que sus métodos y propiedades.

Inicialmente en Excel solo se podían crear hojas de gráficos (Chart), es decir un gráfico se situaba en toda una hojaalgo similar a lo que sucede cuando se presiona la tecla F11 sobre un listado de datos, inmediatamente se crea unahoja de grafico de los datos con el tipo de grafico por defecto. Después Excel incorporo la posibilidad de tenerobjetos de gráficos dentro de una hoja existente (ChartObject).

En esta lección se muestra como crear un gráfico, manipular el área de gráfico, el área de trazado y las series deun objeto grafico (ChartObject), al igual que algunas de sus propiedades. También se verá cómo crear un gráficocircular con un subgráfico de barras que agrupe porcentajes menores a un valor establecido y por último comoexportar un gráfico como una imagen.

La ventaja de crear gráficos y exportarlos como imagen es que se puede utilizar dichas imágenes exportadas para

poderlas cargas en un formulario, poderlas visualizar en páginas web y otras posibilidades más…

Option Explicit ‘Creacion de un grafico desde VBASub Crear_Grafico()Dim ws As WorksheetDim migrafico As ChartObject

Set ws = ActiveSheetCharts.Add ‘Se crea una hoja de grafico

Page 23: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 23/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  23 

With ActiveChart ‘en la hoja de gafico activa….SetSourceData ws.Range(“A1″).CurrentRegion ‘establecer el origen de los datos a graficar.Location xlLocationAsObject, ws.Name ‘mover a la hoja1, con lo cual pasa de objeto Chart a ChartObjectEnd With

Set migrafico = ws.ChartObjects(1) ‘se crea una referencia

With migrafico.Width = 300 ‘ancho.Height = 150 ‘alto.Left = 180 ‘distancia con la parte izquierda de la hoja.Top = 10 ‘distancia con la parte superior de la hoja.Chart.Legend.Position = xlLegendPositionBottom ‘poner leyenda en la parte inferior del graficoEnd WithEnd Sub

 ‘Modifica el area de grafico (ChartArea) del grafico activoSub Area_Grafico()Dim ws As WorksheetDim grafico As ChartDim area As ChartArea

Set ws = ActiveSheet ‘hoja activaSet grafico = ws.ChartObjects(1).Chart ‘grafico 1Set area = grafico.ChartArea ‘area de grafico

With area.Shadow = True.Select.Border.ColorIndex = 3.Border.Weight = xlMedium.Interior.ColorIndex = 34.AutoScaleFont = False.Font.Size = 14End WithEnd Sub

 ‘Modifica el area de trazado (PlotArea) del grafico activo

Sub Area_Trazado()Dim ws As WorksheetDim grafico As ChartDim trazado As PlotArea

Set ws = ActiveSheetSet grafico = ws.ChartObjects(1).ChartSet trazado = grafico.PlotArea

With trazado.Top = 20.Left = 35.Height = 100.Width = 200End WithEnd Sub

 ‘Modificar las series del graficoSub Series()Dim ws As WorksheetDim grafico As ChartDim serie As Series

Set ws = ActiveSheetSet grafico = ws.ChartObjects(1).ChartSet serie = grafico.SeriesCollection(“Xdata”)

Page 24: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 24/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  24 

With serie.ChartType = xlLine.Border.Weight = xlThick.MarkerStyle = xlMarkerStyleCircle.MarkerBackgroundColorIndex = xlColorIndexAutomatic.MarkerForegroundColorIndex = xlColorIndexAutomatic.MarkerSize = 10End WithEnd Sub

 ‘Crea un grafico circular con subgrafico de barras (agrupa todos los porcentajes < 5%)Sub Grafico_Circular()Dim ws As WorksheetDim rng As RangeDim grafico As ChartDim grupo As ChartGroup

Set ws = ThisWorkbook.Sheets(“Hoja2″)Set rng = ws.Range(“A1″).CurrentRegionSet grafico = Charts.Add

With grafico.ChartType = xlBarOfPie ‘tipode grafico

.SetSourceData rng ‘fuente de datos

.ApplyDataLabels xlDataLabelsShowPercent ‘mostrar etiquetas de porcentaje

Set grupo = .ChartGroups(1)

With grupo.SplitType = xlSplitByPercentValue.SplitValue = 5 ‘menor que 5% combinado.GapWidth = 200 ‘espacio entre el grafico circular y las barras.SecondPlotSize = 55 ‘% relativo al tamaño del circuloEnd With

.Location xlLocationAsObject, ws.Name ‘establecer como objeto de graficoEnd WithEnd Sub

 ‘Exportar un grafico como imagenSub Exporta_Grafico()Dim ws As WorksheetDim grafico As Chart

Set ws = ThisWorkbook.Sheets(“Hoja2″)Set grafico = ws.ChartObjects(1).Chartgrafico.Export “C:\grafico.gif”, filtername:=”GIF” ‘se exporta el grafico a la unidad C como imagen gifEnd Sub

LECCION 11 Colecciones para el manejo de gráficos

Conjunto AxesUsar el método Axes para devolver el conjunto Axes. El siguiente ejemplo muestra el número de ejes del gráfico.

With myChart

MsgBox .Axes.Count

End With

Page 25: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 25/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  25 

Utilizar Axes(type, group), donde type es el tipo de eje y group es el grupo de ejes, para devolver un solo objetoAxis.

Type puede ser una de las siguientes opciones

XlAxisType puede ser una de estas constantes XlAxisType.

xlCategory

xlSeries xlValue

Grupo puede ser cualquiera de las siguientes constantes XlAxisGroup : xlPrimary o xlSecondary.

El siguiente ejemplo establece el texto del título del eje de categorías.

With myChart.Axes(xlCategory)

.HasTitle = True

.AxisTitle.Caption = "1994"

End With

Conjunto ChartGroups

Una colección de todos los objetos ChartGroup del gráfico especificado. Cada objeto ChartGroup representa unao varias series trazadas con el mismo formato de un gráfico. Un gráfico contiene uno o varios grupos de gráficos,cada grupo de gráficos contiene una o varias series y cada serie contiene uno o varios puntos. Por ejemplo, unúnico gráfico puede contener un grupo de gráficos de línea, que contiene todas las series trazadas con el formatode gráfico de línea y en un grupo de gráficos de barras, que contiene todas las series trazadas con el formato de ungráfico de barras.

Usar el método ChartGroups para devolver el conjunto ChartGroups. El siguiente ejemplo muestra el número degrupos de gráficos en el gráfico.MsgBox myChart.ChartGroups.Count

Para devolver un solo objeto ChartGroup, utilizar ChartGroups(index ), donde index  es el número de índice delgrupo de gráficos. El siguiente ejemplo agrega líneas de unión al grupo de gráficos uno del gráfico.myChart.ChartGroups(1).HasDropLines = True

Dado que el número de índice de un grupo de gráficos determinado puede cambiar si se modifica el formato degráfico del grupo, puede ser conveniente utilizar uno de los métodos abreviados para grupos de gráficos paradevolver un grupo de gráficos determinado. El método PieGroups devuelve el conjunto de grupos de gráficoscirculares del gráfico especificado, el método LineGroups devuelve el conjunto de grupos de gráficos de líneas,etc. Cada uno de estos métodos se puede utilizar con un número de índice para devolver unobjeto ChartGroup individual, o sin número de índice para devolver un conjunto ChartGroups. Existen lossiguientes métodos para grupos de gráficos:

  AreaGroups  BarGroups  ColumnGroups  DoughnutGroups  LineGroups  PieGroups

Conjunto DataLabels

Una colección de todos los objetos DataLabel  para la serie especificada. Cada objeto DataLabel representa unrótulo de datos para una línea de tendencia o un punto. Para obtener una serie sin puntos definidos (por ejemplo,una serie de área), el conjunto DataLabels contiene un único rótulo de datos.

Usar el método DataLabels para devolver el conjunto DataLabels. El siguiente ejemplo establece el formatonumérico de los rótulos de datos de la serie uno del gráfico.

With myChart.SeriesCollection(1)

Page 26: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 26/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  26 

.HasDataLabels = True

.DataLabels.NumberFormat = "##.##"End With

Para devolver un solo objeto DataLabel, utilizar DataLabels(index), donde index es el número de índice del rótulode datos. El siguiente ejemplo establece el formato numérico del quinto rótulo de datos de la serie uno del gráfico.myChart.SeriesCollection(1).DataLabels(5).NumberFormat = "0.000"

HiLoLines

Representa las líneas de máximos y mínimos del grupo de gráficos especificado. Las líneas de máximos y mínimosconectan el punto máximo con el mínimo en todas las categorías del grupo de gráficos. Sólo pueden tener líneas demáximos y mínimos los grupos de líneas bidimensionales. Este objeto no es un conjunto. Ningún objeto representauna línea de máximo y mínimo individual; este tipo de líneas se activan o se desactivan para todos los puntos deun grupo de gráficos.

Usar la propiedad HiLoLines para devolver el objeto HiLoLines. El siguiente ejemplo asigna el color azul a las líneasde máximos y mínimos del grupo de gráficos uno.myChart.ChartGroups(1).HiLoLines.Border.Color = RGB(0, 0, 255)

Conjunto LegendEntries

Una colección de todos los objetos de LegendEntry de la leyenda del gráfico especificado. Cada entrada de

leyenda consta de dos partes: el texto de la entrada, que es el nombre de la serie o línea de tendencia asociadacon la entrada; y el marcador de entrada, que vincula visualmente la entrada de leyenda con su serie o línea detendencia en el gráfico. Las propiedades de formato para el marcador de entrada y su serie o línea de tendencia seencuentran en el objeto LegendKey.

Usar el método LegendEntries para devolver el conjunto LegendEntries. El siguiente ejemplo ejecuta un ciclo enel conjunto de elementos de leyenda del gráfico y cambia a azul el color de la fuente.With myChart.LegendFor i = 1 To .LegendEntries.Count.LegendEntries(i).Font.ColorIndex = 5Next

End With

Para devolver un solo objeto LegendEntry, utilizar LegendEntries(index ), donde index  es el número de índice delelemento de leyenda. No es posible devolver entradas de leyenda por nombre.El número de índice representa la posición de la entrada de leyenda en la leyenda. LegendEntries(1) está en la

parte superior de la leyenda; LegendEntries(LegendEntries.Count) está en la parte inferior.En el ejemplo siguiente se cambia el estilo de fuente en cursiva el texto de la entrada de leyenda en la partesuperior de la leyenda (generalmente es la leyenda para la serie uno) en myChart.myChart.Legend.LegendEntries(1).Font.Italic = True

Conjunto Points

Una colección de todos los objetos Point en la serie especificada de un gráfico.Usar el método Points para devolver el conjunto Points. En el siguiente ejemplo se agrega un rótulo de datos alúltimo punto de la serie uno del gráfico.Dim pts As PointsSet pts = myChart.SeriesCollection(1).Pointspts(pts.Count).ApplyDataLabels Type:=xlShowValue

Usar puntos(índice), donde index  es el número de índice del punto, para devolver un solo objeto de punto. Puntosse numeran de izquierda a derecha de la serie. Points(1) es el punto del extremo izquierdo y es el punto del

extremo izquierdo y Points(Points.Count) es el punto más a la derecha. En el ejemplo siguiente se establece elestilo del marcador para el tercer punto de la serie uno del gráfico. La serie especificada debe ser una línea de 2D,dispersión o serie de radiales.

myChart.SeriesCollection(1).Points(3).MarkerStyle = xlDiamond

Conjunto SeriesCollection 

Una colección de todos los objetos Series en el gráfico especificado o el grupo de gráficos.

Page 27: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 27/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  27 

Usar el método SeriesCollection para devolver el conjunto SeriesCollection. En el siguiente ejemplo se ajusta elcolor interior de cada serie del conjunto:For X = 1 To myChart.SeriesCollection.CountWith myChart.SeriesCollection(X).Interior.Color = RGB(X * 75, 50, X * 50)End With

Next X

Para devolver un solo objeto Series, utilizar SeriesCollection(index ), donde index  es el nombre o número deíndice de la serie. En el siguiente ejemplo se establece en rojo el color interior de la serie uno del gráfico.myChart.SeriesCollection(1).Interior.Color = RGB(255, 0, 0)

Conjunto TrendLines

Una colección de todos los objetos Trendline para la serie especificada. Cada objeto de la línea detendencia representa una línea de tendencia de un gráfico. Una línea de tendencia muestra la tendencia, o ladirección de los datos en una serie.

Utilizar el método Trendlines para devolver el conjunto Trendlines. En el siguiente ejemplo se muestra el númerode líneas de tendencia de la serie uno del gráfico.MsgBox myChart.SeriesCollection(1).Trendlines.Count

Usar el método Add para crear una nueva línea de tendencia y agregarla a la serie. En el ejemplo siguiente seagrega una línea de tendencia lineal a la serie uno del gráfico.With myChart.SeriesCollection(1).Trendlines.Add Type:=xlLinear, Name:="Linear Trend"

End With

Para devolver un solo objeto TrendLine, utilizar Trendlines(index ), donde index  es el número de índice de la líneade tendencia. En el siguiente ejemplo se cambia el tipo de línea de tendencia de la serie uno del gráfico. Si la serieno tiene línea de tendencia, este ejemplo dará error.myChart.SeriesCollection(1).Trendlines(1).Type = xlMovingAvg

El número de índice representa el orden en que se agregan líneas de tendencia a la serie. Trendlines(1) es laprimera línea de tendencia agregado a la serie y se agrega de la primera línea de tendencia a la seriey Trendlines(Trendlines.Count) es el último agregado.

LECCION 12 Objetos para el manejo de gráficos

Objeto Chart

Representa el gráfico Microsoft Graph especificado.Utilizar la propiedad Chart para devolver el objeto Chart. La mayoría de las veces, se creará una referencia a ungráfico de Microsoft Graph y después se utilizará la referencia en el código.

Objeto PlotArea

Representa el área de trazado del gráfico especificado. Es el área en que se trazan los datos de un gráfico. El áreade trazado de un gráfico 2D contiene los marcadores de datos, rótulos de datos, líneas de división y elementosopcionales del gráfico situados en el área de gráfico. El área de trazado de un gráfico 3D contiene los elementosanteriores más los planos inferior y laterales, ejes, títulos de los ejes y rótulos de las marcas de graduación delgráfico.El área de trazado está rodeado por el área del gráfico. El área del gráfico en un gráfico 2D contiene los ejes, el

título del gráfico, los títulos de los ejes y la leyenda. El área del gráfico en un gráfico 3D contiene el título delgráfico y la leyenda.

Utilizar la propiedad PlotArea para devolver un objeto PlotArea. El siguiente ejemplo coloca un borde discontinuoalrededor del área de gráfico y un borde punteado alrededor del área de trazado.

With myChart

.ChartArea.Border.LineStyle = xlDash

.PlotArea.Border.LineStyle = xlDot

End With

Page 28: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 28/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  28 

Objeto Series

Representa una serie del gráfico especificado. Objeto Series es un miembro de la colección SeriesCollectionPara devolver un solo objeto Series, utilizar SeriesCollection(index ), donde index  es el nombre o número deíndice de la serie. En el siguiente ejemplo se establece el color interior de la serie uno del gráfico.

myChart.SeriesCollection(1).Interior.Color = RGB(255, 0, 0)El número de índice de la serie indica el orden en que las series se agregan al gráfico. SeriesCollection(1) es la

primera serie que se agregan a la tabla, se agrega de la primera serie al gráficoy SeriesCollection(SeriesCollection.Count) es el último agregado.

Objeto SeriesLine

Representa las líneas de serie del grupo de gráficos especificado. Las líneas de serie conectan los valores de datosde cada serie. Sólo pueden tener líneas de serie los grupos de gráficos de columnas o barras 2D apiladas. Esteobjeto no es un conjunto. Ningún objeto representa una línea de serie individual; las líneas de serie se activan o sedesactivan para todos los puntos de un grupo de gráficos.Utilizar la propiedad SeriesLines para devolver el objeto SeriesLines. En el siguiente ejemplo se agregan líneasde serie al grupo de gráficos uno del gráfico. El gráfico debe ser 2D de barras o columnas apiladas.With myChart.ChartGroups(1).HasSeriesLines = True.SeriesLines.Border.Color = RGB(0, 0, 255)

End With

Objeto Point

Representa un único punto de una serie del gráfico especificado. El objeto de punto es un miembro de la colecciónPoints, que contiene todos los puntos de la serie especificada.Usar puntos(índice), donde index  es el número de índice del punto, para devolver un solo objetode punto . Puntos se numeran de izquierda a derecha de la serie. Points(1) es el punto del extremo izquierdo y esel punto del extremo izquierdo y Points(Points.Count) es el punto más a la derecha. En el ejemplo siguiente seestablece el estilo del marcador para el tercer punto de la serie uno. Para que este ejemplo funcione, la serie unodebe ser una línea de 2D, dispersión o serie de radiales.

myChart.SeriesCollection(1).Points(3).MarkerStyle = xlDiamond

Objeto ChartTitle

Representa el título del gráfico especificado.Usar la propiedad ChartTitle para devolver el objeto ChartTitle. El siguiente ejemplo agrega un título al gráfico.

With myChart

.HasTitle = True

.ChartTitle.Text = "February Sales"

End With

LECCION 13 Propiedades para el manejo de Gráficos

Propiedad ChartType

Devuelve o establece el tipo de gráfico. XlChartType de lectura y escritura.

XlChartType puede ser una de estas constantes XlChartType.

xl3DArea. Área 3D

xl3DAreaStacked. Área 3D apilada

xl3DAreaStacked100. Área 3D apilada

xl3DBarClustered. Barras 3D agrupadas

Page 29: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 29/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  29 

xl3DBarStacked. Barras 3D apiladas

xl3DBarStacked100. Barras 3D 100% apiladas

xl3DColumn. Columnas 3D

xl3DColumnClustered. Columnas 3D agrupadas

xl3DColumnStacked. Columnas 3D apiladas

xl3DColumnStacked100. Columnas 3D 100% apiladas

xl3DLine. Líneas 3D

xl3DPie. Circular 3D

xl3DPieExploded. Circular 3D seccionado

xlArea. Área

xlAreaStacked. Área apilada

xlAreaStacked100. Área apilada 100%

xlBarClustered. Barra agrupada

xlBarOfPie. Circular con subgráfico de barras

xlBarStacked. Barra apilada

xlBarStacked100. Barra apilada 100%

xlBubble. Burbuja

xlBubble3DEffect. Burbujas con efectos 3D

xlColumnClustered. Columna agrupada

xlColumnStacked. Columna apilada

xlColumnStacked100. Columna apilada 100%

xlConeBarClustered. Barra cónica agrupada

xlConeBarStacked. Barra cónica apilada

xlConeBarStacked100. Barra cónica apilada 100%

xlConeCol. Columna 3D cónica

xlConeColClustered. Columna cónica agrupada

Page 30: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 30/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  30 

xlConeColStacked. Columna cónica apilada

xlConeColStacked100. Columna cónica apilada 100%

xlCylinderBarStacked. Barra cilíndrica apilada

xlCylinderCol. Columna 3D cilíndrica

xlCylinderColStacked. Columna cilíndrica apilada

xlCylinderBarClustered. Barra cilíndrica agrupada

xlCylinderBarStacked100. Barra cilíndrica apilada 100%

xlCylinderColClustered. Columna cilíndrica agrupada

xlCylinderColStacked100. Columna cilíndrica apilada 100%

xlDoughnut. Anillos

xlDoughnutExploded. Anillos seccionado

xlLineMarkers. Líneas con marcadores

xlLineMarkersStacked100. Línea apilada 100% con marcadores

xlLineStacked100. Línea apilada 100%

xlLine. Línea

xlLineMarkersStacked. Líneas apilada con marcadores

xlLineStacked. Línea apilada

xlPie. Circular

xlPieExploded. Circular seccionado

xlPieOfPie. Circular con subgráfico circular

xlPyramidBarClustered. Barra piramidal agrupada

xlPyramidBarStacked. Barra piramidal apilada

xlPyramidBarStacked100. Barra piramidal apilada 100%

xlPyramidCol. Columna piramidal 3D

xlPyramidColStacked. Columna piramidal apilada

xlPyramidColClustered. Columna piramidal agrupada

Page 31: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 31/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  31 

xlPyramidColStacked100. Columna piramidal apilada 100%

xlRadar. Radial

xlRadarFilled. Radial relleno

xlRadarMarkers. Radial con marcadores de datos

xlStockHLC. Máximos, mínimos, cierre

xlStockOHLC. Apertura, máximos, mínimos, cierre

xlStockVHLC. Volumen, máximos, mínimos, cierre

xlStockVOHLC. Volumen, apertura, máximos, mínimos, cierre

xlSurface. Superficie 3D

xlSurfaceTopView. Superficie (vista superior)

xlSurfaceTopViewWireframe. Superficie (estructura metálica vista superior)

xlSurfaceWireframe. Superficie 3-D (estructura metálica)

xlXYScatter. Dispersión

xlXYScatterLines. Dispersión con líneas

xlXYScatterLinesNoMarkers. Dispersión con líneas y sin marcadores de datos

xlXYScatterSmooth. Dispersión con líneas suavizadas

xlXYScatterSmoothNoMarkers. Dispersión con líneas suavizadas y sin marcadores de datos

expression.ChartType expresión  Requerida. Expresión que devuelve uno de los objetos de la lista Aplicar a.

En este ejemplo se establece el tamaño de la burbuja del grupo de gráficos uno en un 200% del tamañopredeterminado si el gráfico es una burbuja 2D.

With myChart

If .ChartType = xlBubble Then

.ChartGroups(1).BubbleScale = 200

End If

End With

Propiedad Font

Devuelve una fuente de objeto que representa la fuente del objeto especificado. Objeto de fuente delectura/escritura solo para el objeto de la hoja de datos, para todos los demás objetos, objeto Font de sólo lectura.expression.Font expresión Requerida. Una expresión que devuelve uno de los objetos arriba mencionados.En este ejemplo se establece como cursiva y negrita de 14 puntos la fuente del título del gráfico.

With myChart.ChartTitle.Font

Page 32: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 32/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  32 

.Size = 14

.Bold = True

.Italic = True

End With

Propiedad ScaleType

Devuelve o establece el tipo de escala del eje de valor. Se aplica sólo para el eje de valores.XlScaleType de lectura y escritura.

XlScaleType puede ser una de estas constantes XlScaleType.

xlScaleLinear 

xlScaleLogarithmic 

expression.ScaleType expresión  Requerida. Expresión que devuelve uno de los objetos de la lista Aplicar a.

LECCION 14 Métodos para el Manejo de Gráficos

Método Chart

Devuelve un objeto Chart que representa el gráfico de Microsoft Graph.

Método SeriesCollection

Devuelve un objeto que representa una sola serie o un conjunto de series del gráfico o grupo de gráficos.expression.SeriesCollection(I n d e x  )expresión  Requerida. Expresión que devuelve uno de los objetos de la lista Aplicar a.Index Variant opcional.El nombre o número de la serie.En este ejemplo se activan las rótulos de datos en la serie uno.

myChart.SeriesCollection(1).HasDataLabels = True

Método DataLabels

Devuelve un objeto que representa un único rótulo de datos o un conjunto de rótulos de datos para la serie.expression.DataLabels(I n d e x  )expresión  Requerida. Expresión que devuelve uno de los objetos de la lista Aplicar a.Index Variant opcional.El número del rótulo de datos.

En este ejemplo se configuran los rótulos de datos de la serie uno para que muestren la leyenda, suponiendo quesus valores estén visibles cuando se ejecute el ejemplo.

With myChart.SeriesCollection(1)

.HasDataLabels = True

With .DataLabels

.ShowLegendKey = True

.Type = xlValueEnd With

End With

Page 33: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 33/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  33 

LECCION 15 Controles, Cuadros de Diálogo y Formularios

Los formularios en VBA no son más que un cuadro de diálogo de Excel donde se puede colocar controles quepermitirán a solicitar información del usuario. Se puede colocar cajas de texto, etiquetas, cuadros combinados,botones de comando, etc.

Los formularios de Excel son creados desde el Editor de Visual Basic. El editor de los formularios se muestra acontinuación:

Los formularios se componen de controles, a continuación se muestra un ejemplo.

Page 34: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 34/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  34 

LECCION 16 Crear Formularios

Un formulario en VBA es un cuadro de diálogo donde se agregan diversos tipos de controles como botones decomando, cajas de texto, casillas de verificación, y otros controles más que serán de utilidad para obtenerinformación de un usuario ya sea para procesarla y devolver algún resultado o simplemente almacenarla.Los formularios permiten crear aplicaciones en Excel para extender el uso y funcionalidad de la herramienta yaunque su uso está fuertemente relacionado con los usuarios avanzados de Excel, no es tan complicado utilizarlos.Para agregar un nuevo formulario en la Pestaña Programador, seleccionar Visual Basic y se mostrará el editor deVBA . Se realiza clic derecho sobre VBA Project   y se selecciona la opción Insertar > UserForm:

Page 35: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 35/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  35 

De inmediato el panel principal mostrará el formulario recién creado así como un pequeño cuadro de diálogo con eltítulo Cuadro de herramientas el cual contiene los controles que se pueden agregar al formulario.

El Cuadro de herramientas tiene un botón para cada tipo de control como etiqueta, cuadro de texto, cuadrocombinado, cuadro de lista, casilla de verificación, botón de opción, etc. Para agregar un control al formulario esnecesario hacer clic en el botón correspondiente dentro del Cuadro de herramientas y posteriormente hacer clicdentro del formulario. Otra manera de agregar un control al formulario es pulsar el botón del control y arrastrarlosobre el formulario.

LECCION 17 Agregar Controles a Formularios

Como ejemplo se agregará una etiqueta, un cuadro de texto, un cuadro de lista y un botón de comando de maneraque el formulario quede de la siguiente manera:

Para cambiar el texto de la etiqueta y del botón de comando se debe modificar la propiedad llamada Caption y esose realiza desde la ventana Propiedades. Si esta ventana no se muestra actualmente en el Editor de Visual Basic sepuede seleccionar desde el menú Ver  o también se puede hacer clic derecho sobre alguno de los controles yseleccionar la opción Propiedades lo cual mostrará la ventana:

Page 36: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 36/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  36 

Al lado derecho de la propiedad se ingresa el valor de dicha propiedad para el control seleccionado. En la imagenanterior se están viendo las propiedades de la etiqueta llamada Label1 y por ejemplo se coloca eltexto Temperatura. Para hacer el cambio de esta propiedad para el botón de comando solo se debes seleccionar dela lista desplegable que se encuentra en la parte superior de la misma ventana Propiedades. Al terminar el cambiode la propiedad Caption se tendrá el formulario de la siguiente manera:

En la imagen anterior se puedes notar que también se cambió en el título del formulario y se puedes hacermodificando también la propiedad Caption del formulario mismo.

LECCION 18 Programar eventos de controles en Formularios

Agregar opciones al cuadro de lista

Un último cambio que se hará a los controles es agregar los valores al cuadro de lista. Para el ejemplo solo senecesitan los valores Celsius y Fahrenheit pero no existe una propiedad del control que permita hacerlo sino que sedebe utilizar código VBA. Para especificar estas opciones se debe hacer doble clic sobre el formulario y seleccionarel código para el procedimiento Initialize donde colocaremos las instrucciones necesarias para agregar las opciones.El procedimiento Initialice captura el evento de arranque del formulario cuando este se muestra:

Page 37: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 37/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  37 

La instrucción AddItem es la que permite agregar un nuevo elemento al cuadro de lista y la instrucción ListIndex  permite indicar el valor que estará seleccionado al cargarse el formulario y que será la opción Celsius ya que es laprimera opción de la lista y por lo tanto tiene asociado el índice cero.

Código del botón de comando

Finalmente en el ejemplo se agrega código VBA al botón de comando que será el encargado de hacer la conversión,solo se realiza doble clic sobre el botón para mostrar la ventana de código asociada. El código que se coloca en elprocedimiento Click es el siguiente:

Private Sub CommandButton1_Click()

'Validar que se ha especificado una temperatura

If TextBox1.Value = "" Then

MsgBox "Debe especificar una temperatura"

Exit Sub

End If

'Si es Celsius convertir a Fahrenheit

If ComboBox1.ListIndex = 0 Then

temperatura = TextBox1.Value * 1.8 + 32

MsgBox temperatura & " Fahrenheit"

'Si es Fahrenheit convertir a Celsius

Else

temperatura = (TextBox1.Value - 32) * 5 / 9

MsgBox temperatura & " Celsius"

End If

End Sub

Page 38: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 38/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  38 

La primera validación dentro del código verifica que el cuadro de texto no esté vacío en cuyo caso desplegará unmensaje solicitando ingresar una temperatura y posteriormente sale de la subrutina. La segunda validación es parasaber si el cuadro de lista tiene seleccionada la opción Celsius y por lo tanto hacer la conversión a Fahrenheit paramostrar el resultado. Por el contrario, si el cuadro de lista tiene seleccionada la opción Fahrenheit se hará laconversión a Celsius. Para probar el funcionamiento del formulario es suficiente con pulsar el botón Ejecutar que seencuentra en la barra de herramientas Estándar:

Una vez terminada la construcción del formulario y el código necesario para su funcionamiento, se debe dar unpaso adicional para llamar el formulario desde una hoja de Excel.

Cargar formulario desde una hoja de Excel

Para cargar un formulario desde una hoja de Excel será suficiente con agregar un botón de comando ActiveX desdela ficha Programador:

Al hacer doble clic sobre el botón se mostrará el código asociado al evento Click del botón y se debe colocar unasola instrucción:

Page 39: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 39/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  39 

Con esto será suficiente para que al momento de pulsar el botón de la hoja de Excel se muestre el formulario

VBA recién creado y se pueda realizar la conversión de temperaturas.

LECCION 19 Novedades en Aplicaciones para Office en Excel 2013 : Nuevas funciones de hoja decálculo, Análisis Rápido, Disponibilidad de nuevos orígenes de datos, Uso de los modelo OM, Creaciónde gráficos dinámicos y tablas dinámicas de forma independiente, Interfaz de un único documento, Lasanimaciones de encendido y apagado mediante programación, Escala de tiempo

Si se desarrolla soluciones de libro personalizadas, se pueden usar las siguientes mejoras de programabilidad ycaracterísticas en Microsoft Excel 2013

Aplicaciones para Office en Excel

Microsoft Excel 2013 aporta la web a Excel. Nuevas aplicaciones para Office ofrecen una gran cantidad de nuevosescenarios y soluciones en un entorno de fácil de usar para el desarrollo de aplicaciones web dinámicas. Estosignifica que ahora se pueden usar populares lenguajes dinámicos (por ejemplo, Python, PHP, Perl y JavaScript) y

las herramientas de desarrollo de web (por ejemplo, Microsoft Visual Studio 2012) para el desarrollo deaplicaciones. El desarrollo de Web también permite usar las comunidades de Desarrollador global y la disponibilidadde varios ejemplos de código, frameworks y bibliotecas, que amplían la utilización de la aplicación para losdiferentes escenarios. Se pueden crear dos tipos de aplicaciones para Office en Excel, aplicaciones de contenido yaplicaciones del panel de tareas.

A p l i c a c i o n e s d e Co n t e n i d o p a r a O f f i c e   integran las características basadas en web como contenido que sepuede mostrar en conjunto con el documento. Aplicaciones de contenido para Office permiten integrarvisualizaciones de datos basada en web; escenarios de multimedia incrustados, como la integración de unreproductor de vídeo de YouTube o una galería de imágenes así como otras funciones de contenido externos. Lasiguiente figura muestra una implementación de una aplicación de contenido en Excel 2013.

Page 40: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 40/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  40 

 Applicaciones del panel de tareas para Office permite trabajar en-paralelo con un documento de Office y dejar quelos profesionales desarrolladores de Office proporcionen información contextual y funcionalidad para mejorar la

visualización y experiencia de creación de documentos. Por ejemplo, una aplicación de panel de tareas para Officepuede buscar y recuperar información sobre el producto desde un servicio web basado en el nombre del producto onúmero de parte según una selección del usuario en el documento. En la siguiente figura, se muestra un ejemplo.

Page 41: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 41/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  41 

Nuevas funciones de hoja de cálculoMicrosoft Excel 2013 agrega cincuenta nuevas funciones de hoja de cálculo para la compatibilidad con el formatode documento abierto (ODF 1.2).Y, ahora se pueden usar las funciones de servicio de web (en la categoría de las funciones de Web ) para accedera los servicios de Web de REST de forma anónima. De especial atención es la función FILTERXML, que permiteutilizar expresiones XPath para filtrar el XML devuelto por una llamada a función WEBSERVICE.Análisis rápido

Análisis rápido, tal como se muestra en la siguiente figura, es una nueva herramienta de la interfaz de usuariocontextual que permite el acceso con un solo clic a las características de análisis de datos, como las fórmulas,formato condicional, minigráficos, tablas, gráficos y tablas dinámicas. Se puede habilitar y deshabilitar lapresentación de la nueva característica de análisis rápido en Excel 2013 mediante programación utilizando losmétodos Show y Hide del objeto QuickAnalysis .

Page 42: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 42/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Todos los derechos reservados, prohibida la reproducción, Instituto Gala de Venezuela  42 

Disponibilidad de nuevos orígenes de datos

Se puede conectar a un conjunto de nuevos orígenes de datos compatibles con PowerPivot, incluyendo ODatafuentes, Azure, fuentes de datos de SharePoint y los proveedores de OLE DB adicionales. Los nuevos

objetos DataFeedConnection, ModelConnection, TextConnection y WorksheetDataConnection contienendatos y la funcionalidad necesaria para conectarse a orígenes de datos nuevos.

Uso de los modelos OM

Un nuevo modelo de objetos de DataModel (una adición al existente de Visual Basic para el modelo de objetos deaplicaciones) permite cargar y actualizar los orígenes de datos mediante programación. Esta extensión para elmodelo de PowerPivot introducida en Excel 2010 permite integrar orígenes de datos adicionales y la capacidad decombinar datos de varios orígenes de datos mediante programación. Los nuevos objetos en este modelo incluyenModel, ModelChanges, ModelRelationship y objetos de ModelTable.

Page 43: Mm011

7/23/2019 Mm011

http://slidepdf.com/reader/full/mm011 43/43

Manual CURSO EXCEL 2013 y PROGRAMACIÓN (VBA) y MACROS

 

Creación de gráficos dinámicos y tablas dinámicas de forma independiente

Se puede usar la separación de gráficos dinámicos de las tablas dinámicas en Excel 2013. Gráficos dinámicos ytablas dinámicas basadas en un origen de datos OLAP o PowerPivot pueden estar desconectadas y se puede crearun gráfico dinámico independientemente de cualquier tabla dinámica, y se puede navegar a través de datosmediante el uso de la experiencia de un solo gráfico dinámico. Esto es en contraste con el paradigma actual que secrea un gráfico dinámico como un complemento a una tabla dinámica. Esta función disociar está representada enExcel 2013 cliente y servicios de Microsoft Excel.

Interfaz de un único documento

El cambio a una interfaz de documento único (SDI Single Document Interface) en Excel 2013 repercute enprogramación. SDI significa que cada libro tendrá su propia ventana de nivel superior de la aplicación y tendrá supropia cinta correspondiente. Todos los métodos de la ventana de nivel de la aplicación existente, eventos ypropiedades no se ven afectadas por este cambio. Todos los métodos existentes de la ventana de nivel de libro ,propiedades y eventos ahora funcionan en la ventana de nivel superior para ese libro.

Las animaciones de encendido y apagado mediante programación

Se puede usar la propiedad EnableMacroAnimations nueva en el objeto Application para alternar la

visualización de las animaciones. Las animaciones están deshabilitadas de forma predeterminada durante laejecución de la macro. Para habilitar la animación, se agrega Application.EnableMacroAnimations = True alprincipio de la macro. Para permitir que Excel muestre animaciones durante la ejecución de la macro, se debeasegurar esta configuración para cada macro.

Escala de tiempo

Excel 2013 incluye un nuevo control de escala de tiempo para filtrar datos modelados. La escala de tiempo ofreceuna manera visual para ver y cambiar un intervalo de fechas y filtros para ser utilizados en objetos dinámicos,como las tablas dinámicas y gráficos dinámicos. Las escalas de tiempo están relacionadas con las segmentacionesde datos y permiten ampliar los miembros del modelo de objetos relacionados con la segmentación de datosexistente. Además, se introdujeron dos nuevos objetos específico de la escala de tiempo: losobjetos TimelineState y TimelineViewState .

Conclusión

Excel 2013 ofrece una gran cantidad de nuevas características para programadores. Las Aplicaciones de Officeproporcionan una oportunidad para que los programadores integren características de aplicaciones web en Excel2013, ya sea como contenido que se puede mostrar en conjunto con la hoja de cálculo, o en-paralelo con la hojade cálculo. Otras características nuevas es la extensión del modelo de objetos VBA Excel 2013 incluyendo análisisrápido, la escala de tiempo, un nuevo modelo de objetos, la disponibilidad de nuevos orígenes de datos y lacapacidad de crear gráficos dinámicos y tablas dinámicas de forma independiente entre sí. Además, existen nuevasfunciones de hoja de cálculo y la capacidad para usar las funciones de servicio de Web para acceder a los serviciosweb REST de forma anónima.