Publicado el

Buscador en excel con carga de imágenes (macro/VBA)

Buscador Excel con Imágenes

Hace poco un familiar me pidió ayuda para realizar una búsqueda en excel pero con la particularidad de mostrar una imagen relacionada con el resultado de la búsqueda. Lo que necesitaba hacer se lograba habilitando las macros y programando un poco en Visual Basic. Tenía mucho tiempo sin utilizar Visual Basic (desde el colegio xD), así que investigando un poco logré el objetivo.

A continuación les explico cómo lo solucioné en Excel 2007, haciendo un buscador simple de personas donde mostraremos la información encontrada y una imagen correspondiente a la nacionalidad de la persona encontrada, empecemos entonces.

Lo primero que deben hacer es habilitar la opción Programador de Excel, deben ver algo como se muestra en la imagen:

Excel Opción Programador

En caso contrario deben habilitarlo y dependerá de la versión de excel que tengan, pueden ver este enlace para habilitar la opción Click Aquí.

Si necesitaramos hacer un buscador de puro texto, podemos utilizar la función BuscarV; podemos ver su uso en el enlace Click Aquí.

En nuestro caso esta función BuscarV no es suficiente, pues necesitamos mostrar una imagen relacionada y para lograr esto debemos programar un poco. La idea es entonces detectar el cambio del contenido de una celda y de acuerdo al valor de dicha celda mostrar una imagen relacionada. Antes debemos tener una carpeta con las imágenes a cargar, nombradas con el atributo de búsqueda para relacionarlas implícitamente y poderlas cargar. En nuestro ejemplo esta carpeta de imágenes se llama banderas y nuestro atributo elegido fue el id, cómo se muestra en la imagen.

Directorio Ubicación Imágenes

Teniendo nuestras imágenes, debemos ahora insertar un control activex de imagen en donde se mostrará la imagen buscada. Para lograr esto nos vamos a la sección de controles, menú insertar y en la opción Imagen (control activex). En la imagen a continuación se puede observar:

Control Activex Imagen

Ahora debemos capturar el evento “change” (cambio) de la hoja de calculo, para reaccionar si afectan nuestra celda de búsqueda. Tenemos que abrir entonces el cuadro de edición de Visual Basic dando click a la opción de ver código en el menú controles del Programador. En la siguiente imagen se puede observar:

Abrir Manejador Código

Ahora insertamos el código a continuación en nuestra hoja, que en nuestro caso se llama Hoja1. El código insertado se encargará de manejar el evento, buscar la imagen según el id ingresado, y en caso que no la encuentre colocar una imagen comodín.

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Variable para almacenar la ruta de la imagen
    Dim ImagenRuta As String
    
    ' Ruta de la imagen de acuerdo al id ingresado
    ImagenRuta = ThisWorkbook.Path & "\banderas\" & Range("D4").Text & ".ico"
    
    On Error Resume Next
    
    ' Se intenta cargar la imagen
    Image1.Picture = LoadPicture(ImagenRuta)
    
    ' Manejamos el error en caso que no se encuentre la imagen
    ' colocando una imagen comodin
    If Err Then
        ImagenRuta = ThisWorkbook.Path & "\banderas\logoPC.jpg"
        Image1.Picture = LoadPicture(ImagenRuta)
    End If

End Sub

Ya con este último paso guardamos y debemos ver nuestra imagen al buscar por un id en nuestro cuadro de búsqueda.

Resultado Final

Si quieren probar el ejemplo lo pueden descargar en el enlace Click Aquí.

Publicado el

Mis Comandos Gits

Mis Comandos Gits

En la actualidad tener el poder de un manejador de versiones es indispensable, nos aporta cierta libertad y control a la hora de desarrollar y mantener una aplicación. Por lo general casi todos los desarrollos tiene un manejador de versiones que controla y administra su código fuente.

Aunque he utilizado SVN y GIT, hoy en día el más utilizado sin duda alguna es GIT. Saber manejar GIT es una habilidad indispensable en el mundo del desarrollo de software.

En este post compartiré los comandos GIT que he utilizado en mi quehacer.

– Clonar un repositorio

$>git clone <repository> <directorio>

Por ejemplo:

$>git clone https://github.com/WordPress/WordPress.git UnaWeb

– Ver el estado actual del repositorio para el brach actual

$>git status

– Cambiar de brach

$>git checkout <branch>

Por ejemplo:

$>git checkout develop

– Agregar archivos para un commit

$>git add <archivo_o_directorio>

Por ejemplo:

$>git add hola.txt

En caso que queramos agregar todos los archivos modificados:

$>git add -A

– Crear un commit

git commit -m "<mensaje>"

– Subir un commit (o los commits agregados) al servidor

git push

– Actualizar el repositorio descargándose los últimos commits

git pull

– Ver las diferencias de un archivo dado

git diff <archivo>

– Crear un branch

git branch <nombre>

– Mezclar un branch

En caso que queramos mezclar el branch master con el branch develop, nos ubicamos en el branch master y realizamos la siguiente secuencia de comandos:

git checkout master

git merge develop

git push

En caso que queramos que se mantenga la línea del branch aún mezclado utilizamos los siguientes comandos:

git checkout master

git merge --no-ff develop

git push

Si llegase a existir conflictos en el branch a mezclar en algún archivo, debemos primeramente corregir los conflictos y hacer commit y luego un push.

– Crear una etiqueta, recuerde que se coloca la etiqueta al último commit subido.

git tag <nombre>

– Subir las etiquetas al servidor

git push --tags

– Eliminar una etiqueta local y en el servidor

git tag -d <nombreEtiqueta> //Se elimina localmente
git push origin :refs/tags/<nombreEtiqueta> //Se sincroniza con el servidor

– Sincronizar con el último commit, descartando todos los demás cambios en el repositorio local

git fetch origin && git reset --hard origin/master && git clean -f -d

– Generar archivo zip con mejoras entre dos commits. Algunas veces el ambiente de producción no cuenta con git, por lo tanto debemos generar un archivo zip con las mejoras que deseamos subir, para actualizar el ambiente de producción, en este caso utilizamos el comando:

 Línea del tiempo
  |-> commmit ae04000 (último)
  |
  |-> commit 8c3b9d5 (anterior)

git archive -o ../latest.zip <commit último> $(git diff --name-only <commit anterior>  <commit último>)

Comando Ejemplo:

git archive -o ../latest.zip ae04000 $(git diff --name-only 8c3b9d5 ae04000)

Nota: Recuerde que los cambios del commit anterior no son agregados, si nos necesitamos debemos ir un commit más atrás.
Fuente: stackoverflow-zip-latest-committed-changes-only

– Eliminar el último commit sin afectar los archivos modificados:

git reset HEAD~1

Fuente: aprendegit-como-deshacer-el-ultimo-commit-en-git

Publicado el

Diferentes formas de ejecutar una función en JavaScript

Ejecutar Funciones JS

JavaScript provee varias formas de llamar a una función, las cuales son muy usadas por los frameworks. Les explico con un ejemplo:

var nombre = 'Pedro';

function funcHola (nombre)
{
	nombre = nombre || this.nombre;
	return 'Hola ' + nombre;
}

La llamada común:

console.log(funcHola(nombre)); //--> Hola Pedro

Pero existen otras dos formas de ejecutar una función, utilizando el método call o apply que provee las funciones en JavaScript (objeto función). Ejemplo:

//Llamada con el método call
console.log(funcHola.call(this, nombre));

//Llamada con el método apply
console.log(funcHola.apply(this, [nombre]));

Seguramente se preguntarán para que sirven estos dos métodos que provee las funciones en la vida real. Yo les contesto con una pregunta muy simple, ¿Cómo harías para ejecutar una función pasada por parámetro, en un ámbito (scope) específico?. Veamos un ejemplo:

function funcSaludar(saludo)
{
	console.log(saludo()); //--> Hola Pedro
	console.log(saludo("José")); //--> Hola José
	console.log(saludo.call({nombre:"Antonio"})); //--> Hola Antonio
	console.log(saludo.call({nombre:"Antonio"}, "José")); //--> Hola José
}

funcSaludar(funcHola);

Entonces usando call ó apply podemos controlar el ámbito de una función. Un ejemplo puntual de su uso, se puede ver en JQuery al crear un plugin:

//https://learn.jquery.com/plugins/basic-plugin-creation/
(function ( $ ) {
 
    $.fn.greenify = function() {
        this.css( "color", "green" );
        return this;
    };
 
}( jQuery ));
Publicado el

MySQL, importar archivo SQL desde consola

Importar datos SQLs en MySQL es muy sencillo a través de PHPMyAdmin, ya sea desde la opción importar o directamente ejecutando el SQL. La cosa se complica cuando son muchos datos y el archivo SQL pesa más que el permitido por la opción importar ó, en el ejecutador de SQL web se hace pesado hacer un simple cortar y pegar(ctr + c y ctrl + v) debido a la gran cantidad de información. Es en este punto donde se hace necesario saber cómo ejecutar un archivo SQL directamente desde la consola del MySQL, para lograrlo haremos los siguientes pasos:

1° Lo primero que debemos hacer es autenticarnos en MySQL. En mi caso desde Windows utilizando XAMPP, me ubico en la carpeta bin de MySQL desde una consola CMD y ejecutamos el siguiente comando:

C:\xampp\mysql\bin> mysql.exe -u<usuario> -p<contraseña>

2° Una vez allí ya ingresamos en la consola de nuestra base de datos MySQL y debemos seleccionar ahora la base de datos a la cual cargaremos los datos SQL. Para lograr tal objetivo hacemos uso del comando USE de MySQL, quedando entonces:

MariaDB [(none)]> use <base_datos>

3° Ahora ya tenemos seleccionada la base de datos a la cual queremos cargar el archivo SQL. Nos quedaría entonces cargar el archivo SQL, para ello utilizaremos el comando SOURCE como se muestra a continuación:

MariaDB [nombre_base_datos]> source <archivo_sql>

Al ejecutar este último comando el interprete MySQL ejecutará cada unas de las líneas contenidas en el archivo SQL y nos responderá la consola directamente, como se muestra en la siguiente imagen:

Importar Archivo En MySQL
Importar Archivo En MySQL