Excel到Outlook VBA预写正文

时间:2014-09-09 19:27:01

标签: excel vba outlook

我有一个不断变化的库存清单(经常新添加),我试图编写一个子程序,它将与Outlook一起发送预先写好的电子邮件回复。根据我在网上找到的信息(例如Ron de Bruin的有用专业知识),似乎这应该是可能的,但我仍然试图弄清楚是否可以在每次点击电子邮件超链接时执行代码第H栏。

例如,我在第3行开始的第A列中有一个人的名字,第3行的第H列中的电子邮件自动格式化为在Outlook中打开新的空白邮件的超链接。我想看看是否可以应用一个宏,每次选择超链接时都会自动填充主题行和正文消息。以下是我到目前为止的情况:

Sub SendEmail()

    Dim olApplication As Outlook.Application

    Set olApp = CreateObject("Outlook.Application")

    Dim olMail As Outlook.MailItem

    Set olMail = olApp.CreateItem(olMailItem)

    olMail.To=
    olMail.Subject = "Subject Line"
    olMail.Body = "This is the body of the e-mail"
    olMail.Display

End Sub

到目前为止,我所拥有的是不可行的,因为我不确定是否需要将“.To =”字段作为范围引用(列H),或者如果我需要在那里引用条件语句来运行基于当选择单元格的超链接时。

1 个答案:

答案 0 :(得分:0)

你的问题的答案是肯定的 您需要做的是在Outlook中获取最近打开的 Inspector对象 请记住,当您单击该链接时,它将自动创建一个MailItem 您需要掌握新创建的MailItem对象,以便对其进行操作。

类似的东西:

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    On Error GoTo halt
    Application.EnableEvents = False

    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem

    Set olApp = GetObject(, "Outlook.Application")

    Do While olApp.Inspectors.Count = 0
        DoEvents
    Loop

    Set olMail = olApp.Inspectors.Item(1).CurrentItem
    With olMail
        .Subject = "I was able to change the subject"
        .Body = "Dear " & Target.Range.Offset(0, -1).Value
        .Display
    End With
forward:
    Application.EnableEvents = True
Exit Sub
halt:
    MsgBox Err.Description
    Resume forward
End Sub

请注意,您需要通过正确引用将 Outlook 绑定到 Excel
另请注意,Outlook应该是打开的,否则你需要添加一个处理程序 这只是指出你如何在跟踪超链接后获得新创建的mailitem。 HTH