domingo, 30 de abril de 2017

Invertir cadenas de texto en excel creando una función personalizada con vba

Dentro de las muchas funciones para el tratamiento de textos que trae excel incluidas no hay una que nos permita invertir cadenas. Es cierto, no la hay. Si tenemos en una celda: "Hola" y queremos invertirla para tener: "aloH" no lo podemos hacer con las funciones disponibles.

Sin embargo, la librería de funciones que incluye vba si tiene una para cumplir con dicho propósito. Se llama StrReverse( ) y lo que nos pide como argumento, es una cadena de texto para poder invertirla.

Como la función esta disponible en vba, tendremos que escribir un poco de código y crear una función personalizada. Así es, en excel también podemos crear nuestras propias funciones y llamarlas en nuestras hojas de cálculo tal y como lo hacemos con BUSCARV, BUSCARH, IZQUIERDA, DERECHA o cualquier otra.

Vamos entonces a construir una función con la que podamos invertir la cadena de texto que tenemos en la celda B2:


Digitamos la combinación de teclas Alt + F11 para llamar el editor de vba y creamos un nuevo módulo:


viernes, 28 de abril de 2017

Truco Excel: Eliminar todos los comentarios de las distintas hojas de un archivo de excel

Hoy vamos a revisar un sencillo pero muy útil truco. En muchas oportunidades, como medio para documentar nuestros archivos de trabajo en excel, utilizamos comentarios en algunas o varias de las celdas. Llega el momento en que debemos compartir o enviar nuestro archivo a otra persona y dado que los comentarios contienen información confidencial, debemos borrarlos. 

Tarea que no es fácil y que se nos puede complicar si nuestro modelo es muy grande, lo que nos puede arriesgar a dejar alguno y enviarlo al destinatario.

Para resolver este problema, vamos a escribir una sencilla macro en vba, que solo va a tener de tres líneas de código.

Supongamos entonces que tenemos un archivo con tres hojas, y vamos a colocar en cada una de las tres hojas, comentarios al azar:


Como ya saben, las celdas con comentarios son aquella que en su esquina superior derecha tienen un pequeño triangulo rojo y que al pasar con el mouse sobre ellas, nos muestran un rectángulo amarillo como el de la imagen.

Enseguida vamos a digitar Alt + F11 para llamar nuestro editor de visual basic y seleccionamos la opción de agregar un nuevo módulo:


miércoles, 26 de abril de 2017

Nuevo ejemplo de web scraping: Construyendo un conversor de monedas

Vamos a retomar el ejercicio que realizamos de web scraping y que realizamos en tres entregas diferentes: Parte 1, Parte 2 y Parte 3. En estos tres posts, encuentran una explicación detallada de lo que hacemos cuando trabajamos el scraping y de las librerías que hay que activar para que la macro pueda funcionar.

El ejemplo de hoy es una macro, que nos va a conectar a la página: 



Vamos a construir una tabla en excel como sigue:



lunes, 24 de abril de 2017

Construir una consulta desde excel a una tabla de una base de datos sin usar vba

Bueno, con anterioridad construimos una macro que nos permitía conectar con una base de datos, ejecutar un código en vba, realizar la conexión y ejecutar un comando qu se encargaba de borrar el contenido de la tabla (ver post: Ejecutar la instrucción DELETE de SQL desde Excel usando VBA. Luego lo mejoramos y realizamos la misma tarea pero utilizando en nuestro código de vba solo el objeto ADODB.Connection (ver post: Post Mejorado: Ejecutar la instrucción DELETE de SQL desde excel usando solo el objeto ADODB.connection de vba). Adicionalmente, en este último adicionamos las líneas de código para asegurar el cierre de la conexión y la referencia al objeto.

Hoy vamos a hacer nuevamente una conexión a nuestra base de datos de acces pero utilizando la funcionalidad que incorpora excel para hacerlo sin necesidad de usar código en vba. Nuestro objetivo sera realizar una consulta con la que podamos consultar el contenido de una tabla. Puesto en términos de SQL, vamos a realizar un SELECT.

Para poder hacerlo, vamos a iniciar con excel y vamos a ir al menú: Datos y seleccionamos la opción access:


En este caso, seleccionamos access, porque es la base con la que vamos a realizar el ejemplo. Ya saben que si lo quieren hacer con Oracle o SQL Server, deben trabajar con Otras Fuentes.

En el cuadro de diálogo que se despliega, vamos a ubicar nuestro archivo de access y damos clic en aceptar:


domingo, 23 de abril de 2017

Post Mejorado: Ejecutar la instrucción DELETE de SQL desde excel usando solo el objeto ADODB.connection de vba

En el post Ejecutar la instrucción DELETE de SQL desde Excel usando VBA vimos como realizar operaciones con bases de datos desde excel. Para esto, utilizamos una conexión y después mediante el uso de un objeto comando, enviamos la instrucción a la base de datos. Hoy vamos a mejorar este código, utilizando solamente la conexión y no vamos a hacer uso del comando. Ya quedará al gusto de cada uno de ustedes, seguir escribiendo sus propios programas como más les guste.

Entonces, vamos a recordar el código inicial:


Como pueden ver, las lineas finales, donde se inicia la instrucción with, es donde esta nuestro comando. Vamos entonces a eliminarlas y reemplazarlas de la siguiente manera:


De esta forma, ya no necesitamos declarar el objeto command ni el código asociado al mismo.

sábado, 22 de abril de 2017

Truco de Excel: Rellenar las celdas en blanco con los datos de la celda de arriba

Hola, hoy vamos a realizar un truco en excel que nos va a servir para rellenar las celdas en blanco de una tabla que tengamos en nuestra hoja de cálculo, utilizando el valor que tengamos en la celda de arriba. 

Esta funcionalidad es bastante útil, ya que los reportes o listados que salen de algunas aplicaciones de negocios, por algún motivo los dejan en blanco. Recuerdo algunos reportes con estas características en varias de las empresas que he trabajado.

Empecemos revisando la base de datos con la que vamos a trabajar:


Este archivo aunque contiene la información necesitada, no nos serviría para construir una tabla dinámica. Para poder hacerlo, tendríamos que rellenar las celdas que están en blanco, haciendo copy/paste hasta llenar el 100%, lo que sería un trabajo largo y tedioso:

viernes, 21 de abril de 2017

Crear una macro para ordenar las hojas de un archivo de excel en orden ascendente o descendente

Hoy vamos a escribir un poco de código en vba. El objetivo que debe cumplir nuestra macro es el de ordenar todas las hojas (o pestañas o tabs) de un archivo de excel, bien sea en orden ascendente o descendente.

Vamos a trabajar con el siguiente archivo de ejemplo:


Como pueden ver, tenemos 10 hojas son los siguientes nombres de ejemplo: X, A, M, W, Q, N, C, I, K, H. Entonces, si todo sale bien con nuestra macro, las hojas deberían quedar en el siguiente orde: A, C, H, I, K, M, N, Q, W, X o al reves, según la opción que seleccionemos.

Vamos a empezar por abrir el editor de vba, para esto utilizamos nuestro teclado digitando: Alt + F11:


Ajustar con el mouse una imagen o un objeto insertado en excel

En el post Trabajando con la Cámara de Excel hay un paso en el que ajustamos la imagen de la tabla de datos al espacio exacto que teníamos disponible en nuestro dashboard. Un amigo me preguntó si hay una forma fácil y rápida de ajustar imágenes y objetos insertados en excel y la respuesta es que sí la hay. Lo primero que hay que decir es que el siguiente truco nos va a servir para ajustar el tamaño o alinear imágenes y objetos tomando como punto de referencia las celdas de excel.

Vamos entonces a retomar el ejemplo del post  Trabajando con la Cámara de Excel en el que teníamos la imagen de la tabla y el espacio donde la queremos insertar y ajustar:


Seleccionamos la imagen dando clic sobre ella:


Y dejando sostenido el clic la vamos a arrastrar como siempre lo hacemos, solo que antes de empezar a moverla, vamos a presionar al mismo tiempo la tecla Alt. Al hacerlo pueden ver como la imagen se empieza a mover y toma como guía los tamaños de las celdas. 

martes, 18 de abril de 2017

Trabajando con la Cámara de Microsoft Excel

Hoy vamos a trabajar con la cámara que trae excel.Una herramienta muy poco conocida y utilizada, pero que al momento de crear dashboards y reportes, se convierte en una verdadera joya.

Por defecto, este comando no esta activado en nuestro excel, así que vamos a empezar por activarlo. Para esto, vamos a dar clic en la opción de personalizar la barra de herramientas y seleccionamos la opción: más comandos:


En la lista desplegable Comandos disponibles, vamos a dar clic y a seleccionar la opción: Todos los comandos:

lunes, 17 de abril de 2017

Utilizando la Funcionalidad: Buscar Objetivo de Excel

Hoy vamos a trabajar con la funcionalidad Buscar Objetivo que trae Excel. Una de esas herramientas que no podemos dejar a un lado y que sin duda nos ayudará a responder preguntas que puedan surgir con nuestros modelos financieros en excel.

Para entender como funciona, vamos a crear un sencillo modelo, en el que simularemos una inversión mediante un depósito bancario de $1.000, a un plazo de 36 meses y con una tasa de 1% mensual:


Vamos a utilizar la función pago( ) de excel, para calcular cual es el valor de cada pago que recibiremos durante los 36 meses:

domingo, 16 de abril de 2017

Utilizando las funciones BUSCARV y BUSCARH para extraer información de una tabla en excel Parte 1

Por solicitud de un par de amigos, vamos a hacer un repaso de como utilizar las funciones BUSCARV y BUSCARH con las que podemos extraer información de tablas de datos en excel. Por lo general en la mayoría de los modelos que vemos todos los días en las oficinas, siempre encontramos este par de funciones.

En este primer porst, iniciaremos con BUSCARV. En una siguiente entrega trabajaremos con BUSCARH.

Para trabajar nuestro ejemplo de BUSCARV, usaremos la siguiente tabla:



Nuestro objetivo, es construir una función para que al momento de ingresar un id en la columna E, obtengamos el nombre correspondiente en la columna F:

Iniciemos pues con el uso de la función BUSCARV. Sus argumentos son:



miércoles, 12 de abril de 2017

Ejecutar la utilidad compactar y reparar de Microsoft Access

Nuestros archivos de bases de datos de Microsoft Access suelen ir creciendo con el tiempo. En la medida en que realizamos transacciones con los mismos e insertamos nuevos registros, nuestra base de datos se incrementa en algunos o en muchos bytes.

Muy pocas personas suelen realizar una tarea de mantenimiento que al menos deberíamos ejecutar una o dos veces en el mes, dependiendo del volumen de transacciones que realicemos en nuestra base. Esta tarea de mantenimiento realiza una reparación de nuestro archivo de access y ejecuta un proceso mediante el cual se compacta la base de datos, disminuyendo el tamaño de la misma y  mejorando el performance del archivo.

Vamos hoy entonces a ejecutar este sencillo comando, que nos va a ayudar a mantener unas bases de datos sanas y de menor tamaño. Este proceso se lo vamos a aplicar a una base de datos que tengo en mi disco duro, y que se llama: Gastos Gestionables SAL.accdb que pueden ver a continuación:


Como pueden ver, en este momento el tamaño del archivo es de 5.160 KB. Vamos entonces a abrir el archivo y en el menú: HERRAMIENTAS DE BASES DE DATOS buscamos la opción:Compactar y reparar base de datos y damos clic en ella:

Ejecutar la instrucción INSERT INTO de SQL desde Excel usando VBA

Continuando con los posts en los que estamos trabajando como ejecutar instrucciones de SQL desde nuestro excel, hoy vamos a trabajar con la instrucción INSERT INTO. Ya previamente vimos la instrucción UPDATE y la instrucción DELETE donde en ambos casos utilizamos la librería ADO.

Para ejecutar INSERT INTO, necesitamos lo mismo, es decir, una conexión y un comando. Así de simple.

Nuevamente nos vamos al editor de visual basic, y vamos a ingresar el código para la conexión. Recuerden que como lo vimos previamente, hay que activar la librería ADO:


En este caso, la ruta del archivo de access, la tenemos en una hoja llamada Configuración, en la celda B3.

Procedemos a crear un comando DELETE, para limpiar la tabla en la que vamos a cargar nuestros datos:


sábado, 8 de abril de 2017

Ejecutar un procedimiento almacenado en SQL Server desde Ms Access

Hoy vamos a revisar como ejecutar un procedimiento que este construido en T-SQL y que se encuentre almacenado en una base de datos de un servidor de SQL Server. La verdad es que la sentencia para ejecutarlo es mínima y como vamos a usar las consultas de paso a través, esa poderosa herramienta que trae Microsoft Access, solo vamos a necesitar una línea de código y un conector ODBC.

Entonces, lo primero que vamos a hacer en nuestro archivo de access, es crear una nueva consulta:


Cerramos el cuadro de diálogo que se despliega por defecto:

martes, 4 de abril de 2017

Activar la cadena de conexión ODBC en consultas SQL de paso a través en Ms Access

Una poderosa herramienta que trae incorporada Access son las llamadas consultas de paso a través. Así es, esa pequeña base de datos esta llena de sorpresas, incluso es capaz de trabajar con transacciones y puede hacer efectivamente commit o roll back.

Dichas consultas, nos sirven para conectarnos a bases de datos externas como Oracle, SQL Server, My SQL, Postgress y otras, permitiéndonos ejecutar código SQL nativo del motor del servidor al que nos conectemos. Eso que quiere decir? simple, que desde access, podríamos escribir una consulta codificada en T-SQL (en el caso de SQL Server) o en PL/SQL (En el caso de Oracle), ejecutarla y enviarla a correr en el servidor. Cuando construimos la consulta, lo que nos sucede es que en cada oportunidad que la ejecutamos, Access nos va a pedir que indiquemos cuál es el archivo ODBC que permite hacer la conexión con el servidor. En este post, vamos a ver qué debemos hacer para evitar ese paso y que nuestra consulta se ejecute siempre que le demos doble clic.

Vamos a trabajar con una base que ya tiene creada la siguiente consulta de paso a través:


La vamos a ejecutar:

domingo, 2 de abril de 2017

Ejecutar la instrucción UPDATE de SQL desde Excel usando VBA

En este segundo post, vamos a ejecutar la instrucción UPDATE que básicamente es para actualizar registros en una base de datos. Sencilla pero poderosa y de mucho cuidado, pues después de ejecutada no la podremos deshacer. Nuevamente, vamos a construir una macro que va a combinar vba y sql.

Vamos a iniciar abriendo un archivo de excel, y vamos a dar la combinación de teclas Alt + F11 para abrir el editor de visual basic. Nos  deberá aparecer la siguiente ventana:


Seleccionamos la opción para insertar un módulo: