在完成我的作业后,我发布了这个问题。请帮我解决这个问题..
我想在文本正文中搜索ASA1234yy并将其替换为嵌入式超链接[ASA1234yy] [1] 在体内可以有许多这种类型的id,每个超链接应该是唯一的,遵循模式
到目前为止完成的代码
Sub ConvertToHyperlink(MyMail As MailItem)
Dim strID As String
Dim Body As String
Dim objMail As Outlook.MailItem
Dim temp As String
Dim RegExpReplace As String
Dim RegX As Object
strID = MyMail.EntryID
Set objMail = Application.Session.GetItemFromID(strID)
Body = objMail.Body
Body = Body + "Test"
objMail.Body = Body
Set RegX = CreateObject("VBScript.RegExp")
With RegX
.Pattern = "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
.Global = True
.IgnoreCase = Not MatchCase
End With
RegExpReplace = RegX.Replace(Body, "http://www.code.com/ABCD")
Set RegX = Nothing
objMail.Body = RegExpReplace
objMail.Save
Set objMail = Nothing
End Sub
此代码仅替换整个ID。如何将ID添加到超链接。 添加后,我需要一个嵌入的超链接。
感谢
好的,我的修改过的想法如下......
您好..
我在下面描述的过程中面临两个问题。
将从Outlook mailitem中提取的指定文本转换为word文档中的超链接,并将其保存在outlook mailitem中。
即收到的电子邮件 - >将其保存在Word文档中 - >将文本更改为超链接 - >将更改的WORD文档保存到Outlook邮件项
我的代码只找到文档中的第一个出现的文本,并用超链接替换它并留下其他的出现次数
在Word文档中进行修改后,我想将文档的内容复制到outlook mailitem。
如果电子邮件中有表格和其他内容,格式化就会丢失。
我的代码在这里为你...
Sub IncomingHyperlink(MyMail As MailItem)
Dim strID As String
Dim Body As String
Dim objMail As Outlook.MailItem
Dim temp As String
Dim RegExpReplace As String
Dim RegX As Object
Dim myObject As Object
Dim myDoc As Word.Document
Dim mySelection As Word.Selection
strID = MyMail.EntryID
Set objMail = Application.Session.GetItemFromID(strID)
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
objSelection.TypeText "GOOD" & objMail.Body
With objSelection.Find
.ClearFormatting
.Text = "ASA[a-z][a-z][0-9][0-9][0-9][0-9][0-9]"
.Forward = True
.Wrap = wdFindAsk
.MatchWildcards = True
End With
'Find next instance of Pattern "ASA[a-z][a-z][0-9][0-9][0-9][0-9]"
objSelection.Find.Execute
'Replace it with a hyperlink
objSelection.Hyperlinks.Add Anchor:=objSelection.Range, _
Address:="http://www.code.com/" & objSelection.Text, _
TextToDisplay:=objSelection.Text
objDoc.SaveAs ("C:\Desktop\testdoc.doc")
objWord.Quit
objMail.Body = objSelection.Paste
objMail.Save
Set objMail = Nothing
End Sub
你能帮忙解决这两个问题吗?
答案 0 :(得分:1)
好的,我想我现在了解你。您想使用命名组。
从这个正则表达式模式开始:
(?<key>ASA\d{3}[a-z]{2})
然后,将其用于替换模式:
<a href=http://code.com${key}/example>${key}</a>
- 戴夫
答案 1 :(得分:0)
建议:只使用Word的内置Find
方法。
'Set up search
With Selection.Find
.ClearFormatting
.Text = "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
.Forward = True
.Wrap = wdFindAsk
.MatchWildcards = True
End With
' Find next instance of Pattern "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
Selection.Find.Execute
' Replace it with a hyperlink
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, _
Address:="http://www.code.com/" & Selection.Text, _
TextToDisplay:=Selection.Text
以上将保留orinigal文本,例如“ASA5534yy”并插入超链接http://www.code.com/ASA5534yy
(根据需要调整)。