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.
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
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í:
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
Publicar un comentario