Buscar en Ayuda Excel:

Validar una dirección de email

Si gestionas una lista de suscripción por correo electrónico, es posible que recibas direcciones de email no válidas, como direcciones con un espacio en blanco delante de @. La siguiente función puede comprobar las direcciones de correo electrónico y confirmar que se trata de direcciones válidas.

Nota: Esta función no puede verificar que la dirección de correo electrónico existe. Solamente comprueba la sintaxis para verificar que la dirección es válida.

IsEmailValid(StrEmail)

El argumento es:

StrEmail: Una dirección de correo electrónico.

Function IsEmailValid(strEmail As String) As Boolean
  Dim strArray As Variant
  Dim strItem As Variant
  Dim i As Long
  Dim c As String
  Dim blnIsItValid As Boolean
  blnIsItValid = True
  'Cuenta la @ en la cadena
  i = Len(strEmail) - Len(Application.Substitute(strEmail, "@", ""))
  'si hay más de una @, dirección no válida
  If i <> 1 Then IsEmailValid = False: Exit Function
    ReDim strArray(1 To 2)
    'las siguientes dos líneas sitúan el texto a la izquierda y derecha
    'de la @ en sus propias variables
    strArray(1) = Left(strEmail, InStr(1, strEmail, "@", 1) - 1)
    strArray(2) = Application.Substitute(Right(strEmail, Len(strEmail) - _
    Len(strArray(1))), "@", "")
    For Each strItem In strArray
      'comprobar que hay algo en la variable
      'si no hay nada entonces falta parte de la dirección
      If Len(strItem) <= 0 Then
        blnIsItValid = False
        IsEmailValid = blnIsItValid
        Exit Function
      End If
      'comprobar solamente caracteres válidos en la dirección
      For i = 1 To Len(strItem)
        'poner en minúsculas todas las letras para una mejor comprobación
        c = LCase(Mid(strItem, i, 1))
        If InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 _
          And Not IsNumeric(c) Then
          blnIsItValid = False
          IsEmailValid = blnIsItValid
          Exit Function
        End If
      Next i
      'comprobar que el primer carácter a la izquierda y derecha no son puntos
      If Left(strItem, 1) = "." Or Right(strItem, 1) = "." Then
        blnIsItValid = False
        IsEmailValid = blnIsItValid
        Exit Function
      End If
    Next strItem

    'comprobar que hay un punto en la mitad derecha de la dirección
    If InStr(strArray(2), ".") <= 0 Then
      blnIsItValid = False
      IsEmailValid = blnIsItValid
      Exit Function
    End If
    i = Len(strArray(2)) - InStrRev(strArray(2), ".") 'colocar el punto
    'comprobar que el número de letras corresponden a una extensión de dominio válida
    If i <> 2 And i <> 3 And i <> 4 Then
      blnIsItValid = False
      IsEmailValid = blnIsItValid
      Exit Function
    End If
    'comprobar que no hay dos puntos juntos en la dirección
    If InStr(strEmail, "..") > 0 Then
      blnIsItValid = False
      IsEmailValid = blnIsItValid
      Exit Function
    End If

    IsEmailValid = blnIsItValid
End Function



Technorati Tags:

Colabora en este manual de Excel

En estos momentos estás navegando por el Manual Colaborativo de Excel 2007.

Tú también puedes colaborar con el manual aportando tus conocimientos o experiencias. Para ello, debes enviarnos a nuestra dirección de correo electrónico, el artículo que deseas que publiquemos, junto con tu nombre de usuario y la sección en la que deseas que aparezca. Tras la recepción y posterior examen del mismo, procederemos a publicarlo junto con tu nombre de usuario y un enlace a tu web o blog, si lo tienes.


Distribuir contenido


Cursos Excel · Manual básico · Tutoriales Excel · Foro Excel · Enlaces y recursos · VBA Excel · Plantillas Excel · Nota legal · Contacta