【问题标题】:Retain formatting when copying from word to outlook从 word 复制到 Outlook 时保留格式
【发布时间】:2020-06-29 15:48:59
【问题描述】:

我有一个将某种格式的文本替换为超链接的代码。此代码在收到电子邮件期间有效。

收到的电子邮件 -> 将电子邮件复制到 word 编辑器(格式丢失) -> 进行必要的更改 -> 从 word 编辑器复制到 Outlook 邮件项目(再次替换的超链接在邮件项目中丢失)

我的代码在这里供您参考..

Sub IncomingHyperlink(MyMail As MailItem)
    Dim strID As String
    Dim Body As String
    Dim objMail As Outlook.MailItem
    Dim strtemp 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 myDoc = objWord.Documents.Open("filename")
    'Set objDoc = objWord.Documents.Open("C:\test.doc")
    Set objDoc = objWord.Documents.Add()
    Set objSelection = objWord.Selection
    objSelection.TypeText "GOOD" & objMail.HTMLBody

    With objSelection.Find
        .ClearFormatting
        .Text = "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
        .Forward = True
        .Wrap = wdFindAsk
        .MatchWildcards = True
    End With

    objSelection.Find.Execute
    objSelection.Hyperlinks.Add Anchor:=objSelection.Range, _
    Address:="http://www.code.com/" & objSelection.Text, _
    TextToDisplay:=objSelection.Text

    objMail.HTMLBody = objDoc.Range(0, objDoc.Range.End)

    objMail.Save
    Set objMail = Nothing
End Sub

此外,此代码仅替换所需文本的第一次出现,而不替换其他文本。 请帮助解决这些问题。谢谢...

【问题讨论】:

    标签: vba outlook ms-word formatting


    【解决方案1】:

    为了替换每一次出现的正则表达式,您可以遍历结果:

    With objSelection.Find
         .ClearFormatting
         .Text = "ASA[0-9][0-9][0-9][0-9][a-z][a-z]"
         .Forward = True
         .Wrap = wdFindAsk
         .MatchWildcards = True
       While objSelection.Find.Execute
           Hyperlinks.Add Anchor:= objSelection.Range, _
               Address:="http://www.code.com/" & objSelection.Text, _
               TextToDisplay:=objSelection.Text
           objSelection.Collapse wdCollapseEnd
       Wend
    End With
    

    为了保持您的格式,您是否尝试(如果可能)仅在 Outlook 中执行您的 vba?

    问候,

    最大

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      相关资源
      最近更新 更多