带有发件人姓名的vba outlook签名

时间:2017-08-04 13:32:28

标签: excel vba excel-vba outlook

我已经搜索了很多问题,但是找不到与我想要的东西相符的东西。

我有这个Outlook代码通过电子邮件发送名为Pedidos的表单。

Sub Mail_ActiveSheet()

    Dim FileExtStr As String
    Dim FileFormatNum As Long
    Dim Sourcewb As Workbook
    Dim Destwb As Workbook
    Dim TempFilePath As String
    Dim TempFileName As String
    Dim OutApp As Object
    Dim OutMail As Object
    Dim sCC As String
    Dim Signature As String

    sCC = Range("copia").Value
    With Application
        .ScreenUpdating = False
        .EnableEvents = False
    End With

    Set Sourcewb = ActiveWorkbook

    Sheets("Pedidos").Copy
    Set Destwb = ActiveWorkbook

    ' Determine the Excel version, and file extension and format.
    With Destwb
        If Val(Application.Version) < 12 Then
            ' For Excel 2000-2003
            FileExtStr = ".xls": FileFormatNum = -4143
        Else
            ' For Excel 2007-2010, exit the subroutine if you answer
            ' NO in the security dialog that is displayed when you copy
            ' a sheet from an .xlsm file with macros disabled.
            If Sourcewb.Name = .Name Then
                With Application
                    .ScreenUpdating = True
                    .EnableEvents = True
                End With
                MsgBox "You answered NO in the security dialog."
                Exit Sub
            Else
                Select Case Sourcewb.FileFormat
                Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
                Case 52:
                    If .HasVBProject Then
                        FileExtStr = ".xlsm": FileFormatNum = 52
                    Else
                        FileExtStr = ".xlsx": FileFormatNum = 51
                    End If
                Case 56: FileExtStr = ".xls": FileFormatNum = 56
                Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
                End Select
            End If
        End If
    End With


    '    With Destwb.Sheets(1).UsedRange
    '        .Cells.Copy
    '        .Cells.PasteSpecial xlPasteValues
    '        .Cells(1).Select
    '    End With
    '    Application.CutCopyMode = False

    ' Save the new workbook, mail, and then delete it.
    TempFilePath = Environ$("temp") & "\"
    TempFileName = Sourcewb.Sheets("Consulta").Range("F2:G2").Value & " " _
                 & IIf(Len(Day(Now)) = 1, "0" & Day(Now), Day(Now)) & IIf(Len(Month(Now)) = 1, "0" & Month(Now), Month(Now)) & Year(Now) & Hour(Now) & Minute(Now) & Second(Now)

    Set OutApp = CreateObject("Outlook.Application")

    Set OutMail = OutApp.CreateItem(0)

    With Destwb
        .SaveAs TempFilePath & TempFileName & FileExtStr, _
                FileFormat:=FileFormatNum
        On Error Resume Next
        On Error GoTo 0
       ' Change the mail address and subject in the macro before
       ' running the procedure.
        With OutMail
            .to = "example@example.com"
            .CC = sCC
            .BCC = ""
            .Subject = "[PEDIDOS 019] " & TempFileName
            .HTMLBody = "<font face=""calibri"" color=""black""> Olá Natalia, <br>"
            .HTMLBody = .HTMLBody & " Por favor, fazer a requisição dos pedidos em anexo. <br>" & " Obrigado!<br>" & xxxxx & "</font>"
            .Attachments.Add Destwb.FullName
            ' You can add other files by uncommenting the following statement.
            '.Attachments.Add ("C:\test.txt")
            ' In place of the following statement, you can use ".Display" to
            ' display the mail.
            .SEND
        End With
        On Error GoTo 0
        .Close SaveChanges:=False
    End With

    ' Delete the file after sending.
    Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
End Sub

正如您所看到的,下面一行中的xxxxx代表我的签名,我希望收到我的电子邮件(正如我发送的那样)并将其写在那里(或姓名和姓氏)。< / p>

   .HTMLBody = "<font face=""calibri"" color=""black""> Olá Natalia, <br>"
    .HTMLBody = .HTMLBody & " Por favor, fazer a requisição dos pedidos em anexo. <br>" & " Obrigado!<br>" & xxxxx & "</font>"

所以我真的是xxxxx 我的电子邮件,或者我的名字,例如。

我已经检查了MailItem.SenderName属性,但我不明白如何使用它。这是我第一次使用VBA发送电子邮件,因此任何建议都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

尝试使用以下代码

.HTMLBody = .HTMLBody & " Por favor, fazer a requisição dos pedidos em anexo. <br>" & " Obrigado!<br>" & .To & "</font>"

只需将XXXXX替换为。它会添加&#34; .To &#34;在你的签名

答案 1 :(得分:1)

在发送邮件之前,SenderName将不可用。

Option Explicit

Sub Signature_Insert()

    Dim OutApp As Object
    Dim OutMail As Object
    Dim nS As Object

    Dim signature As String

    Set OutApp = CreateObject("Outlook.Application")
    Set nS = OutApp.GetNamespace("mapi")

    Debug.Print nS.CurrentUser
    Debug.Print nS.CurrentUser.name ' default property

    Debug.Print nS.CurrentUser.Address
    Debug.Print nS.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress

    signature = nS.CurrentUser
    'signature = nS.CurrentUser.Address

    Set OutMail = OutApp.CreateItem(0)

    With OutMail
        .To = "example@example.com"
        .CC = "sCC"
        .BCC = ""
        .Subject = "[PEDIDOS 019] " & "TempFileName"
        .HTMLBody = "<font face=""calibri"" color=""black""> Olá Natalia, <br>"
        .HTMLBody = .HTMLBody & " Por favor, fazer a requisição dos pedidos em anexo. <br>" & " Obrigado!<br>" & signature & "</font>"
        .Display
    End With

ExitRoutine:
    Set OutApp = Nothing
    Set nS = Nothing
    Set OutMail = Nothing

End Sub