Comment développer une Macro Excel qui contient des expressions régulières pour qu'elle fonctionne sous Windows et Mac

j'ai développé une Macro VBA Excel 2010 qui utilise VBScript.RegExp. Un de mes utilisateurs utilise apparemment Excel Mac 2011, qui supporte VBA, mais pas VBScript.RegExp.

j'ai vu plusieurs messages qui mentionnent qu'il est possible de créer vos propres fonctions RegEx en utilisant AppleScript cela pourrait être appelé par la Macro VBA. Cependant, il semble qu'il devrait y avoir une version Mac de fichier Excel et une version Windows. C'est pas l'idéal.

Est-il une autre façon de mettre en œuvre des expressions régulières dans VBA qui seraient compatibles avec Windows et Mac?

12
demandé sur Siddharth Rout 2012-12-21 22:00:14

3 réponses

malheureusement, aucune solution n'a encore été trouvée pour cela - la solution actuelle consiste simplement à remplacer les expressions régulières par une série de Replace appels (ou autre opération requise).

2
répondu JustinJDavies 2013-02-11 09:29:57

j'ai frappé ce problème en essayant d'utiliser la bibliothèque regexp en essayant de rayer les balises html d'une cellule.

je sais que cela n'a pas été noté dans la question comme l'utilisation désirée mais, dans le cas où il est ou futurs visiteurs essaient de remplacer une fonction regex pour supprimer HTML à partir de tags dans une cellule dans Mac Excel 2011, Cette fonction définie par l'utilisateur fonctionnera. Excuses à l'auteur original, je l'ai trouvé seulement mais ne peut plus trouver la source, je le crains.

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
1
répondu jimmyjamesdub 2013-10-15 13:30:03

Si vous ne dérange pas de payer 99$US, il y a Aivosto RegExpr. Apparemment, il s'agit d'une solution VBA pure, qui devrait fonctionner à la fois sur PC et Mac VBA.

alternativement, écrivez des solutions séparées pour PC et Mac, puis utilisez directives de compilation pour séparer quel morceau de code court sur chaque plate-forme

0
répondu Monty Wild 2013-07-24 23:16:13