使用vba发出标记的Outlook电子邮件的传递日期

时间:2017-01-31 22:23:17

标签: excel vba excel-vba outlook

我在Outlook的ThisOutlookSession中使用以下vba子传递有关标记的邮件的信息:

Private Sub Items_ItemChange(ByVal Item As Object)
    Dim olNameSpace As Outlook.NameSpace
    Dim olInbox  As Outlook.MAPIFolder
    Set olNameSpace = Application.GetNamespace("MAPI")
    Set olInbox = olNameSpace.GetDefaultFolder(olFolderInbox)

    Dim oXL As Excel.Application
    Dim oBk As Workbook
    Set oXL = GetObject(, "Excel.Application")

    If TypeOf Item Is Outlook.MailItem Then
        Debug.Print Item
        If Item.FlagStatus = olFlagMarked Then
            Set oBk = oXL.Workbooks(strBookName)
            oBk.Activate
            Call oXL.Run("DashboardCode.AddTask", Item.Subject, Item.Body, Item.FlagDueBy, Item.FlagRequest, Item.FlagIcon)
        End If

        Set Item = Nothing
    End If
End Sub

excel中的以下vba函数接收信息并将其存储在电子表格中:

Function AddTask(subject As String, body As String, dueDate As Date, flagText As String, respParty As String) As String
    tasksFirstEmptyRow = FirstEmptyRow("Tasks")
    Dim sDate As String
    sDate = Format(dueDate, "dd-mm-yyyy")
    Sheets("Tasks").Cells(tasksFirstEmptyRow, 1) = dueDate
    Sheets("Tasks").Cells(tasksFirstEmptyRow, 2) = respParty
    Sheets("Tasks").Cells(tasksFirstEmptyRow, 4) = flagText
    Sheets("Tasks").Cells(tasksFirstEmptyRow, 5) = subject
End Function

无论标记邮件的截止日期是什么,excel都会将截止日期显示为“1/1/4501”。

我做错了什么?我已经尝试将.FlagDueBy属性作为不同的类型传递,无论我做什么,我都得到相同的结果。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您是否实际执行了代码并确保在调试器中设置了MailItem.FlagDueBy属性?

标记的电子邮件通常不会设置FlagDueBy属性 - Outlook会设置TaskDueDate属性。查看OutlookSpy中现有的标记消息(选择消息,单击“项目”按钮)。