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?
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).
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
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