我开发了一个使用VBScript.RegExp
的Excel 2010 VBA宏。我的一个用户显然使用Excel Mac 2011,它支持VBA,但没有VBScript.RegExp
。
我已经看到几个提到它的帖子可以使用可以由VBA宏调用的AppleScript
创建自己的RegEx函数。但是,似乎必须有Mac版本的Excel文件和Windows版本。这不太理想。
是否有另一种方法可以在VBA中实现与Windows和Mac兼容的正则表达式?
遗憾的是,还没有找到解决方案 - 当前的解决方法是简单地用一系列Replace
调用(或其他所需的操作)替换正则表达式。
我尝试从单元格中删除html标记时尝试使用regexp库时遇到此问题。
我知道在问题中没有注意到这是期望的用途,但是,如果它或将来访问者试图替换正则表达式函数以从Mac Excel 2011中的单元格内的标签中删除HTML,则此用户定义的函数将起作用。向原作者道歉,我发现它只是但我再也找不到源头了。
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解决方案,应该在PC和Mac VBA上运行。
或者,为PC和Mac编写单独的解决方案,然后使用compiler directives分隔每个平台上运行的代码位