Тема: Регулярные выражения в VBA
Недавно товарищ попросил поправить ссылки в excel файле. Часть работы была нетривиальна и требовала задействовать аппарат регулярных выражений. Оказывается, по умолчанию регулярные выражения в VBA выключены. Есть несколько решений.
1. Чтобы задействовать, их надо включить - Tools -> References -> Microsoft VBScript Regular Expressions 5.5. После этого они становятся доступны
Dim str
str = "1.2.3.4"
Dim re, matches
Set re = New RegExp
re.Pattern = "(\d+\.){3}\d+"
Set matches = re.Execute(str)
If matches.Count > 0 Then
MsgBox "IP address"
End If
2. Можно создать объект
Dim str
str = "1.2.3.4"
Dim re, matches
Set re = CreateObject("VBScript.RegExp")
re.Pattern = "(\d+\.){3}\d+"
Set matches = re.Execute(str)
If matches.Count > 0 Then
MsgBox "IP address"
End If
3. Если не требуются сложные преобразования, можно воспользоваться интересным оператором Like
Dim str
str = "1.2.3.4"
If str Like "#.#.#.#" Then
MsgBox "IP address"
End If
Здесь используются следующие шаблоны
? Любой одиночный символ
* Ноль или более символов
# Любая одиночная цифра (0–9).
[charlist] Любой одиночный символ в классе символов (списке)
[!charlist] Любой одиночный символ не принадлежащий классу символов
4. Я намеренно не рассматриваю встроенные табличные функции SEARCH/SUBSTITUTE/REPLACE, потому что они работают с подстроками фиксированной длины.
Источников информации не даю, так как вся информация из разрозненных источников, найденных по запросу vba excel регулярные выражения.