jueves, 8 de octubre de 2015

USO DEL CONTROL IMAGEN EN VBA EXCEL

Regularmente en nuestros programas en VBA tendremos que utilizar imágenes, para tal fin tenemos el control IMAGEN.

Este control como todos los demás tienen varias propiedades, algunas de ellas son:

NAME: Permite asignarle un nombre a el objeto el cual nos permitirá identificarlo dentro del código.

AUTOSIZE: nos permite ajustar la imagen al tamaño del control, dependiendo si le asignamos el valor true o false.

BORDERSTYLE: a esta propiedad podemos asignarle dos valores 0 sin borde 1 con borde.


PICTURE: Esta es la propiedad más importante pues nos permite asignar la imagen al control.

Para ejemplificar el uso de la propiedad imagen escribí una macro que nos permite asignar diferentes imágenes al control, ejemplos como este los puedes encontrar en el curso online de excel.

En la hoja de cálculo están registradas las direcciones en el PC de cuatro imágenes


Tenemos un formulario compuesto por un control combobox( en una entrada anterior vimos su uso) un botón de comando y el control de imagen


Llenamos el control combobox con la información de la hoja de cálculo, para dicho fin utilizamos el siguiente código, esta rutina recibe como parámetro el formulario:


Expliquemos un poco el código anterior, la variable WS de tipo worksheet representa la hoja de cálculo en la cual tenemos nuestros datos, la variable que hemos llamado final no servirá para identificar la última fila con datos en la hoja de Excel. Después de asignar la hoja de cálculo a la variable WS con la instrucción ( set ws _ thisworkbook.worksheets(“HOJA1”)) y calcular la última fila con datos con la instrucción (final = ws.range(“A1”).End(xlDown).Row), empezamos un ciclo que va desde la fila 2 hasta la fila final y durante el cual asignamos a la propiedad additem del combobox la información que tiene la hoja de cálculo en la fila i.

Para invocar la rutina “LLENAR_COMBO” en el código del botón de comando agregamos este código donde el parámetro “ME” representa el formulario:


Cuando el usuario haga clic o seleccione un dato del combobox  ejecutamos el siguiente código:


Lo que hacemos con este código es invocar la rutina “mostrar_imagen”  pasándole como parámetro la dirección de imagen seleccionada y el formulario.

Este es el código que llena el control de imagen


Cargamos la imagen en el control a la propiedad picture  con la instrucción LoadPicture(dirección), asignamos true a la propiedad autosize para que la imagen se ajuste al tamaño del control y le asignamos borde ( el valor fmBordeStyleSingle es igual a 1).

Para aprender más sobre este y otros temas visita el curso online  de excel.

En este enlace encontraras una colección de mas de 20 macros que podrás descargar.

Para automatizar tus proceso en excel escríbeme a macrosymacros1@gmail.com.

Espero que esta macro te sea de utilidad, por favor deja tus comentarios.


sábado, 3 de octubre de 2015

MACRO PARA LLENAR COMBOBOX CON DATOS DE UNA TABLA ACCES

De acuerdo al título de la entrada veremos cómo llenar un control combobox  tomando información de una tabla en acces.

El control combobox nos sirve para mostrar, seleccionar y escribir texto.

El control combobox tiene varios métodos entre ellos el método additem  el cual nos permite agregar datos al control.

Antes de escribir la macro cree una base de datos en acces de la cual tomare la información para llenar el control combobox.


Para empezar insertaremos un formulario en el entorno de desarrollo



Agregaremos al formulario un control combobox .



Agregaremos un boton de comando o commandButton


Crearemos el siguiente código que nos permitirá llenar el combobox , ejemplos como este los puedes encontrar en el curso online de excel.


Este procedimiento recibe como parámetro el formulario en que se encuentra el combobox.

Define las siguientes variables:
  1. DB de tipo dao.database que hace referencia a la base de datos.
  2. RS  de tipo dao.recorset que hace referencia a los registros de la tabla que recorreremos
  3. Strsql que contendrá la instrucción SQL que ejecutaremos.

Se abre la base de datos con la instrucción:
Set db.opendatabase(ubicación del archivo acces)

Ejecutamos la instrucción SQL y recorremos el resultado de la misma hasta llegar al final, mientras se recorre la consulta se agregan los registros al combobox con la instrucción
Fr.cmb1.Additem (registro de la consulta), donde Fr es el formulario , cmb1 es el control combobox.

Se debe agregar el siguiente código al botón de comando:


De esta forma cuando hagamos clic en el botón se invocara a la rutina Llenar_combo que definimos previamente,  el parámetro (ME) hace referencia al formulario.

Si ejecutamos la macro veremos lo siguiente:

Antes de hacer clic en el botón llenar veremos el combobox vacío


Después de hacer clic en el botón llenar veremos el combobox lleno



También podemos llenar un combobox con mas de una columna , en esta entrada te muestro como

Espero que esta macro te sea de utilidad , visita nuestro curso online de excel donde aprenderas mucho mas sobre este y otros temas relacionados con las macros.

En mi ebook Macrosymacros encontraras una colección de macros, que te serán muy útiles  en tus procesos de automatización de hojas de calculo, puedes encontrarlo aquí.

Si necesitas automatizar tus proceso en excel escríbeme a macrosymacros1@gmail.com.







jueves, 1 de octubre de 2015

FORMULARIOS EN VBA

Hoy hablaremos sobre los formularios y algunas de sus propiedades. Para hablar de formularios o cualquier otro objeto en VBA debemos tener muy claro tres conceptos: métodos, propiedades y eventos.

METODOS: son las funciones de un objeto, en otras palabras lo que puede hacer el objeto. Si usáramos como ejemplo un automóvil este puede encender, arrancar, acelerar, parar.

PROPIEDADES: Son los atributos del objeto, en caso del automóvil por ejemplo el color.

EVENTOS: Un evento es aquello que indica a nuestro programa VBA  que  ocurrido algo en el entorno, dependiendo del evento que ocurra se activan procedimientos. Por ejemplo cuando hacemos clic en nuestra aplicación esto es un evento que activa un procedimiento.

Un formulario es un objeto más dentro de VBA con sus métodos, propiedades y eventos.

CREACION DE FORMULARIOS EN VBA EXCEL


Para crear un formulario hacemos clic en la opción insertar formulario del menú principal en el entorno de desarrollo VBA


Hacemos clic en UserForm , ya podemos empezar a trabajar con el formulario.

PROPIEDAD NAME


Esta propiedad nos permite asignarle un nombre a nuestro formulario, para el ejemplo le asigne como nombre al formulario Formulario1.



PROPIEDAD CAPTION


Esta propiedad nos sirve  para asignarle un texto a nuestro formulario, para el ejemplo asigne el texto formulario uno.


PROPIEDADES BACKCOLOR, BORDERCOLOR Y BORDERSTYLE


La propiedad backcolor sirve para establecer el color de fondo de nuestro formulario.
Se utiliza la combinación de colores RGB corresponde a rojo, verde, azul. Cada uno de estos colores se representa con un número entre 0 y 255.


La propiedad Bordercolor nos sirve para asignarle colores a los bordes del formulario


La propiedad BorderStyle sirve para establecer el estilo del borde en el  formulario, puede ser 0 ó 1


Podemos cambiar las propiedades de nuestro formulario en tiempo de ejecución, por ejemplo



Espero que esta entrada te haya sido útil, por favor deja tus comentarios. Si quieres aprender más sobre formularios y otros temas relacionados con VBA excel visita nuestro curso online de excel.







martes, 29 de septiembre de 2015

ABRIR UN LIBRO DE EXCEL CON EL USO DE MACROS

El protagonista en la macro de hoy es el objeto WORKBOOK,  este objeto hace parte de la colección workbooks y nos permitirá acceder a nuestros libros de Excel.

Para hacer referencia al libro de Excel en que estamos ejecutando el código VBA usamos la propiedad THISWORKBOOK como se mostrara más adelante en la macro.

Para ejemplificar el uso del objeto WORKBOOK , cree una macro que permite abrir un libro de Excel que cree  previamente. Ejemplos como este los puedes encontrar en nuestro curso online de excel.




El libro datos será el que abriremos con el uso de la macro. Adicionalmente la macro copia los datos del libro que abre y los pega en el libro que contiene la misma, en este caso copiara los datos que se encuentran en DATOS  a Macro10.

Este es el código de la macro


Como se puede ver en el código usamos la instrucción THISWORKBOOK.PATH esta instrucción retorna la ubicación actual del libro que contiene la macro por este motivo Para que esta macro funcione el libro que queremos abrir debe estar en la misma carpeta que el libro que contiene la macro.

Para copiar los datos desde el libro que estamos abriendo lo hacemos fila por fila, previamente sabemos hasta que fila debemos copiar porque lo calculamos con la instrucción
FILA = WS_DATOS.RANGE(“A1”).ROWS.END(XLDOWN).ROW, esta instrucción nos retornara la última fila con datos después en la columna A1 de la primera hoja del libro que estamos abriendo, para el ejemplo el libro datos.

Espero que esta macro te sea de utilidad, por favor deja tus comentarios. Si quieres aprender más sobre temas como este visita nuestro curso online de excel.

domingo, 27 de septiembre de 2015

MACRO PARA OCULTAR O MOSTRAR FILAS DE UN LIBRO EXCEL

En diferentes ocasiones y por diversos motivos necesitamos ocultar o mostrar una fila determinada de una de cálculo.

Hoy les traigo un sencillo ejemplo de cómo podemos con el uso de VBA para Excel ocultar o mostrar una fila de Excel.

Este código busca en una  hoja de cálculo definida para almacenar los datos las filas que contienen un valor x y las oculta o las muestra dependiendo de la rutina de la macro que estemos ejecutando.


En mi libro de Excel he definido dos hojas de cálculo, una hoja con el nombre parámetros y otra hoja con el nombre principal, la hoja parámetros contiene el valor que buscaremos en la hoja principal para ocultar o mostrar las filas


La hoja principal contiene los datos, en esta misma hoja agregue dos figuras que uso como botones para ejecutar una determinada rutina de la macro.


Para asignar una rutina de la macro para cada figura hacemos clic derecho sobre la figura y seleccionamos asignar macro, veremos el siguiente cuadro de dialogo donde escogemos la macro para nuestra figura o botón. En este ejemplo le estoy asignando la macro ocultar al botón que lleva el mismo nombre en nuestra hoja de cálculo.


Este es el código que ejecutamos para ocultar o mostrar las filas, en el  curso online de excel donde podras encontrar más ejmplos como este

En cada rutina de la macro(mostrar , ocultar) calculamos la última fila con datos esto con el fin de recorrer la hoja de cálculo hasta dicha fila, el recorrido lo hacemos con un ciclo for desde la fila uno hasta la que hemos calculado como última fila con datos,  durante este recorrido se busca el valor que se encuentra en la hoja parámetros en la hoja principal y la fila en que se encuentra  se le aplica la acción ocular o mostrar, asignando el valor booleano verdadero o falso según corresponda  a la propiedad Hidden de la fila.

Podemos ver la hoja de cálculo principal antes de ejecutar la macro, los valores resaltados en amarillo son los que se ocultaran.


Si hacemos clic en el botón ocular el resultado es el siguiente:



Como se puede ver se ocultan las filas resaltadas de amarillo.

Para aprender mas sobre programacion con VBA para excel  te recomiendo el curso online de excel donde te mostraran mas detalladamente como utilizar la maravillosa herramienta que es este lenguaje.

En mi ebook Macrosymacros encontraras una colección de macros, que te serán muy útiles  en tus procesos de automatización de hojas de calculo, puedes encontrarlo aquí.

Espero que te haya sido de utilidad, por favor deja tus comentarios.






sábado, 26 de septiembre de 2015

MACRO QUE CALCULA FECHA Y HORA DEL SISTEMA

Poder conocer la fecha y hora del sistema es una posibilidad que como lo hacen otros lenguajes de programación también nos brinda VBA para Excel.

Para conocer esta información usamos dos funciones como son:

Función DATE: nos permite conocer la fecha del sistema, contiene la fecha a partir del año 0001 hasta el 9999. Además de contener la fecha también contiene valores de hora. Podemos usar Date como tipo de dato, por ejemplo Dim fechayhora as DATE, esta variable contendrá la fecha y la hora por haber sido definida de tipo DATE.

Función TIME: Nos permite obtener la hora del sistema en formato Date.

Para ejemplificar el uso de estas dos funciones crearemos una macro que nos permite calcular la hora inicial y final del sistema, la macro funciona de la siguiente forma:

  1.  Tiene dos botones creados en la hoja de cálculo botón inicio y botón final.
  2.  Tiene además de la hoja principal una hoja de hemos llamado parámetros y contiene la estructura (bordes, tamaño) de la celda en que pondremos los datos.
  3. Cuando se hace clic en el botón inicio la macro busca la última fila con datos en la hoja de cálculo principal después de la columna fecha inicial , copia la fila que hemos definido con la estructura para nuestros datos desde la hoja parámetros y la pega en la hoja principal, con el uso de la función date asigna la fecha inicial , con el uso de la función time asigna la hora inicial.
  4. Cuando se hace clic en el botón fin la macro busca la última fila con datos en la hoja de cálculo después de la columna fecha inicial,   con el uso de la función date asigna la fecha final, con el uso de la función time asigna la hora final.
     Este es el código de la macro:

    
   Esta es la hoja de cálculo antes de ejecutar la macro: 


   Hacemos clic en el botón Inicio y se inserta la primera fila:

   Hacemos clic en el botón fin y se muestra la fecha y hora final

    Espero que te sea de utilidad , por favor deja tus comentarios , en el curso online de excel puedes encontrar mas información sobre este y otros temas. 

















lunes, 21 de septiembre de 2015

MACRO PARA RECORRER UNA TABLA ACCES

En una entrada anterior habíamos visto como insertar registros en una base de datos usando macros, hoy veremos cómo consultar o recuperar información de la base de datos atravez de macros.
Excel nos brinda herramientas para importar datos desde acces a la hoja de cálculo, pero además de esto existe la posibilidad de acceder a una base de datos acces usando macros.

Hay dos elementos para tener en cuenta en esta macro:

1.       Modelo DAO(Objetos de acceso a datos): Este utiliza el motor de base de datos Microsoft jet que nos brinda un conjunto de objetos para manipular la base de datos especialmente archivos .mdb.

2.       Recordset: el recordset representa los registros de una tabla de la base de datos o de una consulta.

Para poder presentar este ejemplo previamente cree una basede datos en acces:


Antes de empezar a escribir el código debemos agregar una referencia al modelo de datos DAO


Este es el código que nos permite acceder y recorrer la basede datos


En la primera línea definimos una instancia del modelo de datos DAO que nos permitirá manipular la base de datos.
Definimos una rutina Recorrer tabla como su nombre lo indica es la que más nos interesa. Dentro de esta rutina esta definida la variable WS  de tipo Excel.Worksheet este variable nos permite manipular la hoja de cálculo. La variable STRSQL contendrá la instrucción SQL que ejecutaremos sobre el objeto recordset. Definimos un ciclo que nos ayuda a recorrer la tabla hasta que llegamos al final de la misma.

Antes de ejecutar la macro tenemos la hoja de cálculo vacía


Después de ejecutar la macro podemos ver que trae la información de la base de datos



Puedes aprender más sobre base de datos , instrucciones SQL  y  macros en el curso online de excel podras aprender más sobre este y otros temas

En mi ebook Macrosymacros encontraras una colección de macros, que te serán muy útiles  en tus procesos de automatización de hojas de calculo, puedes encontrarlo aquí.

Espero que te haya sido de utilidad, por favor deja tus comentarios.