Ejemplo de subrutina en VBA (Ms Excel)

VBA es un lenguaje de programación que se puede utilizar para automatizar tareas en Excel. Se puede utilizar para crear macros, insertar funciones personalizadas y crear formularios. VBA puede ser una herramienta muy poderosa para mejorar la productividad en Excel.

En este post les comparto una subrutina codificada en VBA para extraer una dirección de correo electrónico válida de una cadena de texto. 

Por supuesto, la aplicación de un programa como este cobra valor, no para una o dos cadenas de texto, sino para el caso de tener miles de ellas. 

Suponga que tienes 3 000 cadenas de texto con datos de estudiantes de una universidad. Y te los dan en un archivo TXT, por ejemplo, como sigue:

  • Fulano de Tal 45.922.432 Mérida, cp. 981  fulano_de_tal@yahoo.com 02-02-1989
  • Otro Fulano JP 98.234.234 Maracaibo, cp. 982  otrofulano@gmail.com 12-02-1999

Te piden extraer las direcciones de correo electrónico de los 3 000 estudiantes usando Ms Excel… 

Pues es ¡fácil!, aquí tienes el código VBA:


Sub ExtraerDireccionCorreo()
    Dim inputString As String
    Dim regex As Object
    Dim matches As Object
    Dim match As Object    
    ' Obtener el contenido de la celda B5
    inputString = Range("B5").Value    
    ' Crear un objeto RegExp
    Set regex = CreateObject("VBScript.RegExp") 
    ' Patrón de expresión regular para encontrar una dirección de correo electrónico válida
    regex.Pattern = "([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})"  
    ' Realizar la búsqueda en la cadena de texto
    Set matches = regex.Execute(inputString)   
    ' Verificar si se encontró una dirección de correo electrónico válida
    If matches.Count > 0 Then
        ' Tomar la primera dirección de correo electrónico encontrada
        Set match = matches(0)
        ' Mostrar la dirección de correo electrónico encontrada en la ventana inmediata
        Debug.Print "Dirección de correo electrónico encontrada: " & match.Value
        ' Dejar la dirección de correo electrónico encontrada en la celda C5
        Range("c5").Value = match.Value
    Else
        ' Mostrar el mensaje si no se encontró una dirección de correo electrónico válida
        MsgBox "En la cadena de texto no hay una dirección válida", vbExclamation, "Error"
    End If
End Sub

Para probar la subrutina creada, coloca una cadena de texto en la celda B5. Asegúrate de tener habilitada la librería «Microsoft VBScript Regular Expressions 5.5» antes de ejecutar el código.

Instrucciones para usar el código:

  1. Abre tu libro de Excel y presiona Alt + F11 para abrir el Editor de Visual Basic (VBE).
  2. Haz clic en Insertar en la barra de menú y luego selecciona Módulo.
  3. Copia y pega el código VBA proporcionado en el módulo recién creado.
  4. Cierra el Editor de Visual Basic.
  5. Ahora, ejecuta el programa seleccionando la celda B5 donde se encuentra la cadena de texto y luego ejecutando el macro ExtraerDireccionCorreo. Puedes hacerlo presionando Alt + F8, seleccionando el macro y haciendo clic en Ejecutar.

El programa buscará en la cadena de texto de la celda B5 una dirección de correo electrónico válida utilizando la expresión proporcionada:
  • Si se encuentra una dirección válida, mostrará el mensaje “Dirección de correo electrónico encontrada: [dirección]” en la ventana inmediata. Y deja el correo en la celda C5. 
  • Si no se encuentra una dirección válida, mostrará un cuadro de mensaje con el texto “En la cadena de texto no hay una dirección válida”.
Para aplicarla a cientos o miles de registros, solo hay que modificar el programa para que recorra la lista y extraiga la dirección de correo electrónico de la cadena de texto correspondiente a cada estudiante.


Aplicaciones de Microsoft Excel y sus ventajas en la oficina moderna |  Ejemplo de algoritmo recursivo: Raíz Cuadrada

Con más vistas en el último mes

Diferencias entre "proceso", "actividad" y "tarea"

Importancia de la música para los niños…

¿Ya estás utilizando las alertas de Google académico?