Validar email en Excel con macros vba

Validar email en Excel con vba

Cuando capturamos datos de personas, invariablemente tenemos que añadir un correo electrónico para tener más vías de contacto. A partir de esa premisa, al capturar los datos de manera manual, siempre existe el riesgo humano de equivocarnos en capturar algún registro.

Es por eso que en este artículo les comparto una macro para que les pueda ayudar en validar si un correo electrónico está mal formado, es decir, que no cumpla con los requisitos de [usuario] @ [dominio]. Les compartos ejemplos para validar los correos mediante un formulario o con una función (UDF) que incluso podrá ser usada en la hoja de cálculo como si fuera una función de Excel, tipo BUSCARV, SUMAR.SI, etc.

Ver video Validar email en Excel con macros y función UDF

Antes de comenzar, activa la referencia a Expresiones regulares

No dice Wikipedia que Una expresión regular, a menudo llamada también regex, es una secuencia de caracteres que forma un patrón de búsqueda, principalmente utilizada para la búsqueda de patrones de cadenas de caracteres u operaciones de sustituciones.

En el código vba de la macro encontraremos dos expresiones regulares, la primera nos validará correo de tipo usuario@dominio.com.

Expresión 1: “^[\w-\.]+@\w+\.\w+$”

La segunda expresión validará los tipos de correo usuario@dominio.com.mx.

Expresión 2: “^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$”

Por lo anterior, debemos entrar al IDE de vba con la combinación de teclas [Ctrl] + [F11] y nos dirigimos al menú Herramientas > Referencias, y activamos la librería Microsoft VBScript Regular Expresions 1.0. Esto nos ayudará a poder una expresión regular para validar el correo electrónico.

Activar la libería para usar expresiones regulares es nuestro código vba.

Figura 1. Activar la libería para usar expresiones regulares es nuestro código vba.

Función personalizada (UDF)

Usando la función valida_email_fx(correo) en tu hoja de cálculo, basta con poner una dirección en una celda y la función devuelve VERDADERO o FALSO dependiendo de si el correo es válido o no.

UDF para validar email en Excel.

Figura 2. UDF para validar email en Excel.

Validar email en Formulario

Ahora bien, si la captura de datos es mediante formulario, podemos usar un procedimiento que valide el correo electrónico, así como también podemos usar la misma función usada en la hoja de cálculo, pero directamente en el formulario.

Validar email en Excel mediante formulario.

Figura 3. Validar email en Excel mediante formulario.

Código vba de las macros

Para la función personalidad UDF usaremos la siguiente macro en el módulo UDF.

'***************************************************************************
'Referencias: Microsoft  vb Script Regular Expressions
'   http://www.tipsntracks.com/117/validate-an-email-address-using-regular-expressions.html
'   https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
'***************************************************************************

Function valida_email_fx(email As String) As Boolean

Application.Volatile

'Declaramos variables
Dim oReg As RegExp

' Crea un Nuevo objeto RegExp
Set oReg = New RegExp

On Error GoTo ErrorHandler

'Expresión regular para validar direcciones .com
'oReg.Pattern = "^[\w-\.]+@\w+\.\w+$"

' Expresión regular para validar direcciones .com.mx
oReg.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"

' Comprueba y Retorna TRue o false
valida_email_fx = oReg.Test(email)

Set oReg = Nothing

Exit Function

'En caso de error
ErrorHandler:

MsgBox "Ha ocurrido un error: ", vbExclamation, "EXCELeINFO"

End Function

Y en el formulario tendremos el siguiente código.

'***************************************************************************
'Referencias: Microsoft  vb Script Regular Expressions
'   http://www.tipsntracks.com/117/validate-an-email-address-using-regular-expressions.html
'   https://es.wikipedia.org/wiki/Expresi%C3%B3n_regular
'***************************************************************************

Private Sub CommandButton1_Click()
'Declaramos la variable oReg
Dim oReg As RegExp

' Crea un Nuevo objeto RegExp
Set oReg = New RegExp

On Error GoTo ErrorHandler

' Expresión regular para validar direcciones .com
'oReg.Pattern = "^[\w-\.]+@\w+\.\w+$"

' Expresión regular para validar direcciones .com.mx
oReg.Pattern = "^([a-zA-Z0-9_\-\.]+)@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"

'Comprobamos si el email es válido
email = oReg.Test(Me.txtEmail.Value)

If email = True Then
    MsgBox "email válido.", vbInformation, "EXCELeINFO"
Else
    MsgBox "email inválido.", vbExclamation, "EXCELeINFO"

End If

Exit Sub

'En caso de error
ErrorHandler:

MsgBox "Ha ocurrido un error: ", vbExclamation, "EXCELeINFO"


End Sub

Private Sub CommandButton2_Click()
Dim valida

valida = valida_email_fx(Me.txtEmail.Value)

If valida = True Then
    MsgBox "email válido.", vbInformation, "EXCELeINFO"
Else
    MsgBox "email inválido.", vbExclamation, "EXCELeINFO"
End If

End Sub

Descargar el ejemplo

Si deseas puede descargar el ejemplo con macros incluidas para añadirlas a tus proyectos.

Descargar el ejemplo Validar email con macros y UDF.rar

You may also like...