VBA RegEx

¿Qué es RegEx en Excel VBA?

RegEx significa " Expresión regular " en VBA Excel y es una secuencia de caracteres que define el patrón de búsqueda para encontrar un patrón específico de caracteres en una cadena de valores. En una palabra simple, "podemos crear un patrón de expresión regular y usarlo para buscar la cadena de ese patrón".

VBA RegEx es un modelo de objetos. Sé que es intimidante mirar la explicación pero la cosa es que la naturaleza del objeto. Una cosa que debe recordar aquí es que VBA RegEx (Expresión regular) es un objeto de función de texto como nuestras otras funciones de texto “IZQUIERDA, DERECHA, MEDIA”.

¿Cómo habilitar RegEx en Excel VBA?

Como le dije a VBA RegEx es un modelo de objetos en VBA al igual que nuestro software externo como "MS Word" y "MS PowerPoint". De manera similar, RegEx también es un modelo de objetos componentes (COM) al que debemos hacer referencia en el editor de VBA. Para habilitar RegEx, siga los pasos a continuación.

Paso 1: vaya al Editor de Visual Basic (Alt + F11)

Paso 2: vaya a Herramientas y referencias.

Paso 3: Ahora verá referencias al proyecto VBA. Desplácese hacia abajo y seleccione "Microsoft VBScript Regular Expression 5.5"

Paso 4: Ahora haga clic en Aceptar. Podemos acceder a este objeto RegEx ahora en codificación VBA.

Ejemplo: ahora te mostraré un ejemplo sencillo. Suponga que tiene las palabras "Ventas 2019, Ventas 2018 y Ventas 2017". Si define el patrón como [0 - 7], coincide con todos los números entre 0 y 7, por lo que nuestras coincidencias serán 201, 201 y 2017 en cada cadena.

Patrón de VBA RegEx

El patrón de la función VBA RegEx parece intimidante y lleva algún tiempo entender el patrón. Podemos ver dos tipos de secuencia de caracteres aquí, uno es "Caracteres literales" y otro es "Metacaracteres".

  • Los caracteres literales buscan la coincidencia exacta de la cadena proporcionada. Por ejemplo, la secuencia de caracteres literal "EFG" simplemente busca todas las coincidencias de "EFG" en el texto proporcionado.
  • Los metacaracteres no son más que una combinación de caracteres con un significado exacto en el patrón RegEx. Esto es completamente diferente a los personajes literales. Es un tema enorme para cubrir, a continuación se muestran algunas de las sintaxis importantes.
SintaxisDescripciónEjemploEjemplo de coincidencia
.Coincide con cualquier carácter de la cadena de entradaptMascota. Olla, Poner, Patrón
[]Coincide con cualquier carácter individual entre el corchete de una cadena de entrada[pt]Coincide con p o t
[^]Coincide con cualquier carácter individual, no entre el corchete de una cadena de entrada[^ pt]No coincide ni p ni t
[Primero último]Coincide con cualquier carácter entre el rango proporcionado en el corchete[0-9]Coincide con cualquier dígito del 0 al 9
[Arizona]Coincide con cualquier carácter en minúscula de la a a la z
[ARIZONA]Coincide con cualquier carácter en mayúsculas de la A a la Z
\ sCoincide con cualquier carácter de espacio en blanco-Coincide con el espacio, la nueva línea o el carácter de tabulación
\ SCoincide con cualquier carácter que no sea de espacio en blanco-Los caracteres de coincidencia no son espacio, ni línea nueva ni carácter de tabulación
\reCoincide con cualquier carácter de un solo dígitoSE 5 VG 6Partidos 5 y 6
\RECoincide con cualquier carácter único que no sea de dígitosSE 5 VG 6Coincide con SEVG

Propiedades y métodos del objeto RegEx

Como todos nuestros modelos de objetos, RegEx también tiene sus propias propiedades y métodos. Ahora veremos uno a uno en detalle.

Propiedades del objeto VBA Regex

  • Patrón: se utiliza para hacer coincidir la cadena proporcionada.
  • Ignorar mayúsculas y minúsculas : sirve para ignorar los caracteres en mayúsculas y minúsculas.
  • Global: si desea encontrar todas las coincidencias en el patrón, el argumento es VERDADERO o, de lo contrario, se encontrará la primera coincidencia.
  • Multilínea: si desea encontrar nuevos saltos de línea, puede usar esto.

Métodos de objeto RegEx

  • Prueba: esto es para probar si el patrón se puede encontrar en la cadena proporcionada. Esto devolverá VERDADERO si se encuentra o FALSO.
  • Ejecutar: esto devolverá todas las coincidencias del patrón con la cadena de búsqueda.
  • Reemplazar: esto reemplazará la cadena de búsqueda con la nueva cadena.

Ejemplo de RegEx en VBA Excel

Ahora eche un vistazo al código VBA de ejemplo a continuación.

Puede descargar esta plantilla de Excel de VBA RegEx aquí - Plantilla de Excel de VBA RegEx

Código:

Sub RegEx_Example () Dim RegEx como objeto, MyString como conjunto de cadenas RegEx = CreateObject ("VBScript.RegExp") With RegEx .Pattern = "[0-9] +" End With MyString = "Fecha de nacimiento año 1985" MsgBox RegEx .Test (MyString) MyString = "La fecha de nacimiento es ???" MsgBox RegEx.Test (MyString) End Sub

fregular

En el código anterior, hemos configurado el patrón para buscar el número del 0 al 9 de la siguiente manera.

 Con RegEx .Patrón = "[0-9] +" Terminar con 

Luego, la variable MyString = "Fecha de nacimiento año es 1985", esto contiene los valores de 0 a 9, por lo que nuestro cuadro de mensaje devolverá TRUE.

MyString = "La fecha de nacimiento es ???" no tiene números del 0 al 9, por lo que devolverá FALSE como resultado de los cuadros de mensaje.