Ответ 1
К сожалению, решение для этого еще не найдено - текущее обходное решение состоит в том, чтобы просто заменить регулярные выражения серией вызовов Replace
(или другой требуемой операцией).
Я разработал макрос Excel 2010 VBA, который использует VBScript.RegExp
. Один из моих пользователей, по-видимому, использует Excel Mac 2011, который поддерживает VBA, но не VBScript.RegExp
.
Я видел несколько сообщений, в которых упоминаются возможности создания собственных функций RegEx с помощью AppleScript
, которые можно было бы вызывать с помощью макроса VBA. Однако кажется, что должна быть версия Mac для файла Excel и версия Windows. Это меньше, чем идеально.
Есть ли другой способ реализовать регулярные выражения в VBA, которые будут совместимы как с Windows, так и с Mac?
К сожалению, решение для этого еще не найдено - текущее обходное решение состоит в том, чтобы просто заменить регулярные выражения серией вызовов Replace
(или другой требуемой операцией).
Я столкнулся с этой проблемой, пытаясь использовать библиотеку regexp при попытке снять html-теги из ячейки.
Я знаю, что это не было отмечено в вопросе как желаемое использование, но в случае, если это или будущие посетители пытаются заменить функцию регулярного выражения, чтобы удалить HTML из тегов внутри ячейки в Mac Excel 2011, эта пользовательская функция будет работать. Извинения перед оригинальным автором, я нашел его только, но больше не могу найти источник, которого боюсь.
Public Function StripHTML(zDataIn As String) As String
Dim iStart As Integer
Dim iEnd As Integer
Dim iLen As Integer
Do While InStr(zDataIn, "<") > 0
iStart = InStr(zDataIn, "<")
iEnd = InStr(iStart, zDataIn, ">")
iLen = Len(zDataIn)
If iStart = 1 Then
zDataIn = Right(zDataIn, iLen - iEnd)
Else
If iLen = iEnd Then
zDataIn = Left(zDataIn, iStart - 1)
Else
zDataIn = Mid(zDataIn, 1, iStart - 1) & _
Right(zDataIn, iLen - iEnd)
End If
End If
Loop
StripHTML = zDataIn
End Function
Если вы не против платить 99 долларов США, есть Aivosto RegExpr. По-видимому, это чистая версия VBA, которая должна работать как на ПК, так и на Mac VBA.
В качестве альтернативы напишите отдельные решения как для ПК, так и для Mac, а затем используйте директивы компилятора, чтобы отделить, какой бит кода запускается на каждой платформе