如何开发包含正则表达式的Excel宏,以便它可以在Windows和Mac中运行

时间:2012-12-21 18:00:14

标签: regex excel vba excel-vba excel-vba-mac

我开发了一个使用VBScript.RegExp的Excel 2010 VBA宏。我的一个用户显然使用支持VBA的Excel Mac 2011,但没有VBScript.RegExp

我看过几篇帖子提到可以使用AppleScript创建自己的RegEx函数,这些函数可以由VBA宏调用。但是,似乎必须有Mac版本的Excel文件和Windows版本。这不太理想。

是否有另一种方法可以在VBA中实现与Windows和Mac兼容的正则表达式?

3 个答案:

答案 0 :(得分:2)

不幸的是,还没有找到解决方案 - 当前的解决方法是简单地用一系列Replace调用(或其他所需操作)替换正则表达式。

答案 1 :(得分:1)

尝试从单元格中删除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

答案 2 :(得分:0)

如果您不介意支付99美元,则有Aivosto RegExpr。显然,这是一个纯VBA解决方案,应该可以在PC和Mac VBA上运行。

或者,为PC和Mac编写单独的解决方案,然后使用compiler directives分隔每个平台上运行的代码位