我已经找到了类似的问题而没有运气。我目前有工作代码,在电子邮件正文和主题中查找字符串的特定实例。找到此字符串后,它具有将其带入另一个方向的userform。我的目的是让它遍历整个电子邮件,并计算它发现此迭代的次数,并为该用户表单(弹出窗口)提供一个可调用的变量。这是我的代码。它返回错误,显示“InvalidCastException”,所以我猜这是一个转换错误。有任何想法吗?谢谢!
好的,所以我将你的评论加在一起,并提出以下建议。我得到了很多错误,因为我假设的正则表达式不存在。有任何想法吗?还要感谢您的文献。
Dim regEx ' Create variable.
Dim numfound As Integer
regEx = New RegExp ' Create a regular expression.
'Here it tells me that the regEx.Patter doesn't exist or Pattern is a member of the regex class
regEx.Pattern = "\*#{9}\*" ' Set pattern.
regEx.IgnoreCase = True ' Set case insensitivity.
regEx.Global = True ' Set global applicability.
If regEx.Execute(mailItem.Body) Then
' Getting a "not declared" runtime what should it be declared a Integer such as Dim numfound as Object
numfound = regEx.count
End If
进行了更多挖掘,基本上我回到了InvalidCastException开始的地方,
从字符串“111111111
转换123121233
“输入'Long'无效。
基本上在我的测试电子邮件的正文中,我有两个数字字符串,它不能将它们转换为字符串,然后运行regexp迭代。有什么想法吗?
Dim sBody : sBody = (mailItem.Body) Or (mailItem.Subject) 'This is where is gives me the error
Dim Search : Search = New RegExp
Search.Global = True
Search.Pattern = "\*#{9}\*"
MsgBox(Search.Execute(sBody).Count, MsgBoxStyle.OkOnly)
答案 0 :(得分:1)
为了帮助您入门,如果您想使用RegExp:
(2)演示代码为您提供深思熟虑:
>> Dim sBody : sBody = "Three instances of ###: ### and a part of ####."
>> Dim Search : Set Search = New RegExp
>> Search.Global = True
>> Search.Pattern = "#{3,3}"
>> WScript.Echo Search.Execute(sBody).Count
>>
3
>>
答案 1 :(得分:-2)
最简单的方法是创建一个RegEx实例并用它来解析Item.Body。
Set Search = new RegExp
Search.IgnoreCase = True
Search.Global = True
Search.Pattern = "\*#{9}\*"
If Search.Test(Item.Body) Then
'will hold how many times it has been found
numFound = Search.Count
End If
这是一个链接,其中包含有关RegExp http://msdn.microsoft.com/en-us/library/ms974570.aspx
的更多信息