我在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属性作为不同的类型传递,无论我做什么,我都得到相同的结果。
提前感谢您的帮助。
答案 0 :(得分:0)
您是否实际执行了代码并确保在调试器中设置了MailItem.FlagDueBy
属性?
标记的电子邮件通常不会设置FlagDueBy
属性 - Outlook会设置TaskDueDate
属性。查看OutlookSpy中现有的标记消息(选择消息,单击“项目”按钮)。