【发布时间】:2014-10-07 07:42:35
【问题描述】:
我长期受益于这里的人们向其他人提供的有用建议(真诚感谢大家),但这是我第一次真正发帖。我的 VBA 技能充其量只是乏善可陈。
这让我发疯:我有一个 Outlook 宏,它应该在发送电子邮件之前梳理并替换对我们政策文件的引用,所有这些文件的前缀都是“A&P-”,并带有指向该文件的链接.
它实际上工作得很好,除了它固执地拒绝捕获引文,如果它们是电子邮件中的第一个单词。因此,例如,如果我有一个如下所示的条目列表:
A&P-I-A-1-100、A&P-II-B-2-200、A&P-III-C-3-300
脚本将添加指向第二个和第三个条目的链接(以及我想添加的更多),但完全跳过第一个。奇怪的是,如果我在电子邮件的开头添加任何字符(即使只是按了几次空格键),这不会发生。它也不影响后续段落开头的引用。就这第一个字。
这是我正在使用的代码。非常非常感谢任何帮助!:
Sub Citation3()
Dim myInspector As Outlook.Inspector
Dim myObject As Object
Dim myItem As Outlook.MailItem
Dim rngStory As Word.Range
Dim myDoc As Word.Document
Dim mySelection As Word.Selection
Dim strItem As String
Dim strItem2 As String
Dim strLink As String
Set myInspector = Application.ActiveInspector
Set myObject = myInspector.CurrentItem
Set myDoc = myInspector.WordEditor
Set mySelection = myDoc.Application.Selection
For Each rngStory In ActiveDocument.StoryRanges
With mySelection.Find
.ClearFormatting
.Text = "A&P-*-*-[0-9]{3}"
.Replacement.Text = ""
.Wrap = wdFindContinue
.MatchWildcards = True
If mySelection.Find.Execute = True Then
While mySelection.Find.Execute
strItem = mySelection.Text
strItem2 = Replace(strItem, "A&P", "AP")
mySelection.Hyperlinks.Add Anchor:=mySelection.Range, _
Address:="http://www.google.com/" & strItem2 & "_document.shtml", _
TextToDisplay:=strItem
End If
End With
Next rngStory
End Sub
【问题讨论】:
标签: vba email replace outlook find