Recientemente he estado colaborando con PUE - Proyecto Universidad Empresa en la organización de una base de datos para campañas de marketing a partir de fuentes dispersas en innumerables tablas de Excel, con datos copiados desde webs y directorios diversos.
Uno de los problemas con que me he encontrado son los abundantes errores de transcripción de direcciónes de email, con nombres de dominio mal formados, arrobas duplicadas, espacios traicioneros y cosas por el estilo.
Estuve buscando como crear una validación de datos, pero con las funciones de Excel salían expresiones muy retorcidas con abundantes funciones HALLAR() anidadas.
Entonces pensé en crear una macro con una UDF (función definida por el usuario) que al estilo de las funciones ESNUMERO(), ESTEXTO() o ESERROR() me devolviese un valor VERDADERO en caso de que el argumento pasado tenga una estructura sintáctica correcta para una dirección de email.
Encontré en la web una solución en base a expresiones regulares, peró pense que sería más didáctico desarrollar mi propia macro. Y aquí la tenéis: ESEMAIL().
ESEMAIL() comprueba diferentes errores habituales de transcripción :
- Que exista una arroba y sólo una
- Que haya un punto después de la arroba (pero no consecutivamente)
- Que no haya dos puntos juntos
- Que sólo haya caracteres ASCII válidos (A-Z, a-z, 0-9, @ . (punto), _ (guión bajo), - (guión)
La macro está incompleta en el sentido de que no valida los nombres de dominio internacionalizados (poco habituales por ahora).
Por supuesto, tampoco contempla la comprobación de existencia del dominio, tarea que excedía los objetivos deseados para la función.
En cualquier caso, es útil para una comprobación rápida de la sintaxis de una dirección de correo electrónico y así evitar rebotes innecesarios en campañas de mailing.
Podéis curiosear su funcionamiento y código en el adjunto ESEMAIL_ejemplo_de_uso.xlsm (veréis que la macro está firmada digitalmente por mí, y si queréis activarla, deberéis configurarlo correctamente en el centro de confianza de las opciones de Excel).
Por si encontráis que os puede resultar de utilidad, la podréis instalar permanentemente en vuestro sistema con toda facilidad mediante el complemento funcion.ESEMAIL.xla que también adjunto y así podréis disponer de ella en cualquier libro de Excel.
Este complemento es compatible con versiones anteriores de Excel, así que no es necesario que estéis "al último grito de la moda" para instalar la función.
Seguidamente una pequeña guía de la instalación del complemento en Excel 2003 y Excel 2007 (de igual forma en Excel 2010).
Instalación de la macro en Excel 2003
Suponiendo que habéis descargado la macro en el escritorio, los pasos a seguir son:
- Activar Herramientas > Complementos.
- En el diálogo de Complementos, seleccionar Examinar.
- En el diálogo de Examinar, seleccionar el complemento descargado en el escritorio.
- Al aceptar el diálogo ya estará instalado y activado el complemento
- ¡Ya puedes usar la función ESEMAIL()!
Instalación de la macro en Excel 2007
- Activar el botón de Office (o la ficha Archivo en Excel 2010) y seleccionar Opciones.
- En Opciones, seleccionar Complementos y pulsar el botón Ir a.
- En el diálogo de complementos, seleccionar Examinar.
- En el diálogo de Examinar, seleccionar el complemento descargado en el escritorio.
- Al aceptar el diálogo ya estará instalado y activado el complemento
- ¡Ya puedes usar la función ESEMAIL()!
Me hubiese encantado desarrollarla en Open/LibreOffice, pero la herramienta que utilizamos en PUE es Excel. Esa tarea se la reservo a Salva Domenech, por si desea publicar la función equivalente en el blog de Apache OpenOffice Calc en español.
Adjunto | Tamaño |
---|---|
ESEMAIL_ejemplo_de_uso.xlsm | 22.4 KB |
funcion.ESEMAIL.xla | 45.5 KB |
- Añadir nuevo comentario
- 23753 lecturas
detalle importante
Hola, me encuentro buscando una manera de validar los correos, principalmente porque mis usuarios no saben como poner o que combinación de letras usar para escribir el "@"
así pues ese es mi detalle.
que su macro no detecta cuando hace falta el @ y nos marca como OK
Muchas gracias
¡Qué despiste! Me pareció tan obvio que había @ que no pensé en comprobar ese detalle.
Tomo nota para la próxima actualización.
Gracias.
Buen dia, tampoco detecta si
Buen dia, tampoco detecta si hay un punto consecutivo de un arroba ".@"
Hola cómo puedo validar los
Hola cómo puedo validar los correos para tienda online fundas para portatiles y adaptarlos a lopd. Gracias