【问题标题】:Attach Signature on Outlook using Excel Macro使用 Excel 宏在 Outlook 上附加签名
【发布时间】:2018-12-18 15:01:26
【问题描述】:

我希望你能帮助我,因为我正在撕扯我的头发,尽管我所有的谷歌搜索都告诉我这应该可以工作......

我正在尝试创建一个从 excel 发送电子邮件的宏。它有效,但我必须在发送之前手动添加我的签名。不是世界末日,但还是很烦人。

当我尝试添加代码以添加我的默认签名时,它会应用我的签名但会删除正文的其余部分......请帮助!

Sub email()

        Dim Outlook_App As Object
        Dim Outlook_Mail As Object
        Dim emailBody  As String
        Dim ToBody As String
        Dim CCBody As String
        Dim BCCBody As String

        Set Outlook_App = CreateObject("Outlook.Application")
        Set Outlook_Mail = Outlook_App.CreateItem(0)

        ToBody = ThisWorkbook.Sheets("Test").Range("N9")
        CCBody = ThisWorkbook.Sheets("Test").Range("N10")
        BCCBody = ThisWorkbook.Sheets("Test").Range("N11")

        emailBody = "<BODY style=font-size:11pt;font-family:Calibri>Hi <br> <br>" & _
        "Your work has been randomly sampled. I have submitted your feedback on the Database. <br> <br>" & _
        "Please can you go in to review and accept your feedback within the next <b>5 working days?</b> <br> <br>" & _
        "<a href= """ & ThisWorkbook.Sheets("Test").Range("N12") & """>User Guide – How to Accept Feedback</a> <br>"

        On Error Resume Next

            With Outlook_Mail

                 .Display
                '.To = ToBody
                '.CC = CCBody
                '.bcc = BCCBody
                .Subject = "Feedback - Action Required"
                .HTMLBody = emailBody & .HTMLBody

            End With

        On Error GoTo 0

        Set Outlook_Mail = Nothing
        Set Outlook_App = Nothing

        End Sub

【问题讨论】:

  • 执行代码删除On Error Resume Next行会出现错误吗?
  • 论坛上发布了一个类似的问题 - 请查看 Julia 的答案,该答案创建了一个电子邮件正文并保留了默认签名(如果有的话)。看起来 emailBody 负责删除您的默认签名。 How to add default signature in outlook
  • 谢谢贾斯蒂娜,我会检查一下是否有帮助! Foxfire 我收到运行时错误 287 - 当我调试时,.htmlbody 行出现问题,不知道为什么!
  • @JustynaMK 原来我已经尝试过 Julia 的回答,我在签名 = OMail.body 上遇到运行时 287 错误,有什么想法吗?

标签: excel vba email outlook signature


【解决方案1】:

您不能简单地连接两个 HTML 字符串并期望返回一个有效的 HTML 字符串。两者必须合并。

在最简单的情况下,读取 HTMLBody 属性(在调用 Display 之后),搜索 "&lt;body" 子字符串,找到下一个 "&gt;"(这将处理带有属性的 body 元素),然后插入您的 HTML字符串(当然没有 body 元素)。

【讨论】:

    【解决方案2】:

    根据我的搜索和测试,您可以参考以下代码:

    Sub addUpdate_Click()
    Dim mailObj As MailItem
    Dim emailBody, signature As String
    Dim Outlook_App, Outlook_Mail As Object
    Dim ToBody As String
    Dim CCBody As String
    Dim BCCBody As String
    
    Set Outlook_App = CreateObject("Outlook.Application")
    Set Outlook_Mail = Outlook_App.CreateItem(0)
    
    ToBody = ThisWorkbook.Sheets("Test").Range("N9")
    CCBody = ThisWorkbook.Sheets("Test").Range("N10")
    BCCBody = ThisWorkbook.Sheets("Test").Range("N11")
    
    With Outlook_Mail
        .BodyFormat = olFormatHTML
        .Display
    End With
    signature = Outlook_Mail.HTMLBody
    
    Set mailObj = CreateItem(olMailItem)
    
    emailBody = "<BODY style=font-size:11pt;font-family:Calibri>Hi <br> <br>" & _
            "Your work has been randomly sampled. I have submitted your feedback on the Database. <br> <br>" & _
            "Please can you go in to review and accept your feedback within the next <b>5 working days?</b> <br> <br>" & _
            "<a href= """ & ThisWorkbook.Sheets("Test").Range("N12") & """>User Guide – How to Accept Feedback</a> <br>"
    
            On Error Resume Next
    
                With Outlook_Mail
    
                     .Display
                    '.To = ToBody
                    '.CC = CCBody
                    '.bcc = BCCBody
                    .Subject = "Feedback - Action Required"
                    .HTMLBody = emailBody & signature
    
                End With
    On Error GoTo 0
    
            Set Outlook_Mail = Nothing
            Set Outlook_App = Nothing
    
    End Sub
    

    参考来源:

    Adding a default signature to outlook email VBA

    How to add default signature in Outlook

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 2023-03-30
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多