martes, 5 de abril de 2016

MACRO PARA INSERTAR REGISTROS EN SQL SERVER DESDE EXCEL

Hoy les traigo una macro que como lo dice el titulo nos permitirá insertar registros en sql server.

Tengo una base de datos a la cual llame escuela en la que una de sus tablas contiene la información de los estudiantes: código, nombre, primer apellido, segundo apellido, sexo , edad


En este momento la tabla estudiantes esta vacía:


Nos daremos a la tarea de crear una macro en vba Excel que nos permite insertar registros en esta tabla.
Pero para poder agregar registros a la tabla obviamente primero debemos conectarnos a sql server con dicho fin escribimos la siguiente rutina:


En una entrada anterior de este mismo blog te explico el funcionamiento de esta rutina la cual queremos que se ejecute cada vez que abran el libro de Excel, para que sea así  he creado una rutina más:


La rutina iniciar invoca a la de conexión pasándole como parámetro el nombre del servidor y de la base de datos, esta información se encuentra dentro de la misma hoja de calculo:


En nuestro IDE de VBA hacemos clic en la sección  ThisWorkBook


Y agregamos el siguiente código:


De ahora en adelante cada vez que abramos este libro se ejecutara la macro de forma automática.
Ahora que ya podemos conectarnos a sql server, creamos un formulario para pedir al usuario de nuestra macro la información de los estudiantes que se desea agregar a la base de datos


Como puedes ver este formulario cuenta con un campo para la edad, llenaremos este campo con los números entre 1 y 100, para esto usamos la siguiente rutina:


Para que la rutina anterior se ejecute cada vez que se active el formulario la invocamos desde el método Activate del formulario.


Cada vez que nuestro usuario haga clic en el botón guardar la macro validara que toda la información esta diligenciada, para eso usamos el siguiente código:



Como ya indicamos esta rutina será invocada desde el botón Guardar con el siguiente código:


La rutina validar_formulario es invocada pasándole como parámetro el formulario y el número 0, esta rutina validara cada campo del formulario y si encuentra alguno vació le asignara un uno al parámetro recibido como código de error, además mostrara un mensaje en pantalla.

Para ejemplificarlo ejecutamos la macro:


Si hacemos clic en el botón Guardar se genera el siguiente mensaje:



Cuando todas las validaciones son superadas se invoca la rutina que inserta los registros en la tabla de base de datos, la invocamos de la siguiente forma:

Tendremos que utilizar funciones de conversión en VBA para pasar los parámetros de acuerdo al tipo de datos que recibe la rutina insertar registros, usamos la función Clng para convertir el código del estudiante de tipo texto a un entero largo, usamos la función Cint para convertir la edad del estudiante de tipo texto a entero.

Veamos la rutina que inserta los registros en la base de datos:


Esta rutina ejecuta una sencilla instrucción insert  sobre nuestra base de datos.

Ahora agregaremos un registro a la base de datos usando nuestra macro.


Finalmente hacemos clic en el botón Guardar.


Podemos ver que el registro quedo almacenado en la base de datos:

Espero que esta información te sea útil, si quieres automatizar tus procesos con VBA escríbenos a macrosymacros@gmail.com. En nuestro ebook encontraras una colección de macros completas ya terminadas encuéntralo aquí.

Puedes descargar el documento excel con la macro siguiendo este enlace.

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

Para aprender mas sobre VBA sigue nuestro curso online.

El curso consta de 7 horas y 28 lecciones en vídeo. Aprenderás a ahorrar tiempo en excel , al automatizar tu trabajo mediante macros evitando perdida de tiempo en tareas repetitivas. Aprenderás desde cero a programar en VBA.

Para mayor información sobre el curso de Excel online haga clic aquí.