excel - 将 Outlook 电子邮件导出到 Excel

标签 excel vba outlook export

美好的一天!我是 VBA 新手。我正在尝试借助一些在线可用的 VBA 脚本自动将电子邮件从 Outlook 导出到 Excel。我最终得到了 80% 的结果。请查看我使用过的代码。其中,我还需要添加一些代码来导出邮件正文。请有人指导我。

Public WithEvents objMails As Outlook.Items


Private Sub Application_Startup()

    Set objMails = Outlook.Application.Session.GetDefaultFolder(olFolderInbox).Items

End Sub



Private Sub objMails_ItemAdd(ByVal Item As Object)

    Dim objMail As Outlook.MailItem

    Dim strExcelFile As String

    Dim objExcelApp As Excel.Application

    Dim objExcelWorkBook As Excel.Workbook

    Dim objExcelWorkSheet As Excel.Worksheet

    Dim nNextEmptyRow As Integer

    Dim strColumnB As String

    Dim strColumnC As String

    Dim strColumnD As String

    Dim strColumnE As String

    If Item.Class = olMail Then
       Set objMail = Item
    End If


    strExcelFile = "d:\LocalData\Z018439\Desktop\MY\NX-AMO\Mail Export\export.xlsx"


    On Error Resume Next
    Set objExcelApp = GetObject(, "Excel.Application")
    If Error <> 0 Then
       Set objExcelApp = CreateObject("Excel.Application")
    End If
    Set objExcelWorkBook = objExcelApp.Workbooks.Open(strExcelFile)
    Set objExcelWorkSheet = objExcelWorkBook.Sheets("Sheet1")


    nNextEmptyRow = objExcelWorkSheet.Range("B" & objExcelWorkSheet.Rows.Count).End(xlUp).Row + 1

    strColumnB = objMail.SenderName
    strColumnC = objMail.SenderEmailAddress
    strColumnD = objMail.Subject
    strColumnE = objMail.ReceivedTime


    If StrComp(strColumnB, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c5b6a0b7b3aca6a09aa8a4aba4a2a0b7f285a8a4aca9ebabacb6b6a4abeba6aaebafb5" rel="noreferrer noopener nofollow">[email protected]</a>", vbTextCompare) = 0 Then

    objExcelWorkSheet.Range("A" & nNextEmptyRow) = nNextEmptyRow - 1
    objExcelWorkSheet.Range("B" & nNextEmptyRow) = strColumnB
    objExcelWorkSheet.Range("C" & nNextEmptyRow) = strColumnC
    objExcelWorkSheet.Range("D" & nNextEmptyRow) = strColumnD
    objExcelWorkSheet.Range("E" & nNextEmptyRow) = strColumnE


    objExcelWorkSheet.Columns("A:E").AutoFit


    objExcelWorkBook.Close SaveChanges:=True


    End If

    objExcelApp.Quit


    Set objExcelApp = Nothing


Set objExcelWorkBook = Nothing



  Set objExcelWorkSheet = Nothing



   Set objMail = Nothing

End Sub

最佳答案

body 就像你想象的那样。

strColumnF = objMail.Body

您还拥有 objMail.HTMLBody (它将显示带有 html 标记的正文)、CreationTimeFlagStatusRecipients(收件人的集合,需要转换为字符串)等等。您可以通过查看 View >本地窗口来查看 Debug模式下任何表达式的所有属性的完整列表。

关于excel - 将 Outlook 电子邮件导出到 Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48018055/

相关文章:

excel - 检查范围是否是整行

outlook - 如何在 Outlook 资源管理器窗口中为自定义项目设置自定义图标?

vba - 数据验证选择后运行事件宏

ruby-on-rails - Rails : Excel columns, 种子

Excel - 查找和替换多个单词

excel - ActiveWorkbook 与 ActiveWindow

VBA On Error 未捕获错误

html - 电子邮件中的图像问题

rest - 通过 Office 365 REST API 标记消息?

vba - Excel VBA 查找并替换数字前的所有字符