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

问题描述 投票:13回答:3

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

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

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

regex excel vba excel-vba excel-vba-mac
3个回答
2
投票

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


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

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.