Ir al contenido principal

Seminario Macros Excel Gratuito 6ª Entrega (Qué es VBA y Jerarquía de Objetos)

VBA es un lenguaje de programación que viene integrado en las herramientas de Microsoft Office.

Lo podemos encontrar en:
-Word
- Excel
- Power Point
- Outlook
- Access

Entre otros.




Uno de los mejores programas para aprender VBA es Microsoft Excel y su gran ventaja está en la grabadora de programación o de Macros que lleva incluido a diferencia de otros programas del paquete Office.

Este lenguaje es del tipo POO (Programación Orientada a Objetos). Un libro de Excel está lleno de objetos que se organizan mediante una jerarquía. La programación orientada a objetos se basa en la modificación de las propiedades y los métodos de estos objetos para que realicen las acciones que deseemos.

En el mundo real, un objeto es algo tangible, como puede ser un coche o un gato y se identifica porque tiene propiedades y métodos. Se considera que las propiedades son las características y los métodos son las acciones que puede realizar. En un coche, una propiedad sería el color y un método sería la posibilidad de girar el volante hacia la izquierda o acelerar o frenar y un largo etc.

Excel cuenta con más de 250 objetos. Cada elemento de Excel es un objeto.

  • El propio Excel (Application)
  • Un libro (Workbook)
  • Una hoja (Worksheet) 
  • Un conjunto de celdas (Range)
  • Un gráfico (Chart)
  • Una tabla dinámica (PivotTable)
  • Un dibujo (Shape)

Arriba hemos enumerado unos cuantos.

Muchos de los objetos se agrupan en colecciones.
En el caso real del objeto coche, una colección representaría todos los coches del mundo.
En cuanto a Excel, la colección Workbooks haría referencia a todos los libros de Excel abiertos.

Las colecciones suelen llevar una s al final.

Shapes sería colección mientras que Shape es objeto.

Cuando se inicia el programa Excel estamos abriendo el objeto Application y al mismo tiempo disponemos de un libro en blanco, es decir, el objeto Workbook, el cual dispone de una hoja activa conocida como Worksheet que en su interior tiene un conjunto de celdas que queda representado por el objeto Range.

Aparece entonces el concepto de Jerarquía que vemos aquí:


Siguiendo esta jerarquia podemos hacer referencia a cualquier objeto teniendo en cuenta también las colecciones de objetos. Recordad que una colección es algo normalmente terminado en s que se corresponde con el nombre del objeto. Workbooks de Workbook

Para entender esto mejor si queremos hacer referencia a un libro llamado GastosGenerales2019.xlsm en VBA pondremos algo así:

Application.Workbooks("GastosGenerales2019.xlsm")

Como vemos en la jerarquía los objetos se separan con puntos y las comillas y paréntesis son elementos de sintaxis del propio lenguaje.

Y si quisiéramos cambiar el valor en el libro anterior a la celda B2 de la hoja misGastos la sintaxis es:

Application.Workbooks("GastosGenerales2019.xlsm").Worksheets("misGastos").Range("B2").Value=300

Pero como estamos escribiendo el código dentro de Excel podemos omitir el objeto Application:

Workbooks("GastosGenerales2019.xlsm").Worksheets("misGastos").Range("B2").Value=300

Y si el código está dentro del fichero GastosGenerales.... tambien omitimos el objeto libro:

Worksheets("misGastos").Range("B2").Value=300

Y por ultimo si estamos en una hoja Activa podemos bajar mas:

Range("B2").Value=300

Es importante saber que no todo tipo de ordenes pueden escribirse así, por ejemplo si en vez de asignar un valor a una celda queremos seleccionar una celda no podemos escribir esto:

Application.Workbooks("GastosGenerales2019.xlsm").Worksheets("misGastos").Range("B2").Select

Ya que da error salvo que estemos en la hoja misGastos y ejecutemos la macro ya que solo busca en la hoja activa.

Tendría que haber dividido la macro en dos ordenes, primero activar la hoja y luego seleccionar la celda:
Application.Workbooks("GastosGenerales2019.xlsm").Worksheets("misGastos").Activate
Range("B2").Select

También funciona si llamo a la macro desde otro libro.

Para aclarar esto disponemos del siguiente vídeo:



La siguiente entrega la puede ver en nuestro blog Blog CDEI Knotica



Comentarios

Entradas populares de este blog

Chrome: desactivar la opción “Abrir siempre archivos de este tipo”

En Chrome, al descargar un archivo aparecen tres opciones en el desplegable de la barra de descargas:

Combinar Correspondencia con varias cuentas en Outlook

A veces necesitamos realizar un mailing (Combinar correspondencia) y disponemos de varias cuentas de correo en nuestro Outlook. Comprobamos que no funciona el elegir una de ellas como predeterminada ya que para el envío por correspondencia usa un servicio llamado MAPI que no usa la cuenta predeterminada.  Antiguamente en versiones como la 2010 de office simplemente con cambiar el fichero de datos predeterminado de la cuenta bastaba para ello. Actualmente (nosotros usamos 365, equivalente a la 2016) la solución pasa por crear un perfil de correo en el que configuremos la cuenta que usaremos para combinar correspondencia. Adjuntamos un video en el que se explica en Windows 10 como crear un perfil de correo de una cuenta. Una vez creado ese perfil de Correo pasaríamos a realizar la combinación de Correspondencia y en el último paso cuando  realizamos la combinación de correspondencia nos solicitará el perfil a usar para poder enviar los correos y en ese caso elegiríamos el perfil asociado

Gif animado en Camtasia studio 8

 Si deseamos colocar un gif animado en Camtasia Studio 8 observamos que no es posible de forma directa ya que al importarlo lo incluye dentro de imágenes. El truco es convertirlo en un fichero AVI y para ello no hay nada como disponer de la página de conversión: Online Convert Al incorporarlo a nuestra película lo considera lógicamente un clip de video Et voilá